Skip to content

Hyper-V override and tuning architecture ​

The Hyper-V product provides sealed defaults and stable overrideable parameters. It never edits its sealed Management Packs after import and never stores customer changes in the Default Management Pack. Customers own two unsealed override Management Packs so discovery policy and monitoring policy can be serviced independently.

The preview and v2 products have separate immutable namespaces. The current v2 implementation is the HyperVPrivateCloud schema described below; preview override sources stay available only for compatibility and migration testing. Candidate tuning values remain subject to representative-lab evidence before production release.

Artifact boundary ​

ArtifactOwner and formContainsMust not contain
Hyper-V DiscoveryProduct-owned sealed .mpDiscovery workflows, default schedules, and declared overrideable parametersEnvironment-specific changes
Customer Discovery OverridesCustomer-owned unsealed .xmlDiscovery enablement, schedules, timeouts, scope, and discovery-targeting groupsMonitor, rule, alert, or performance-collection overrides
Hyper-V MonitoringProduct-owned sealed .mpMonitors, rules, tasks, defaults, and declared overrideable parametersEnvironment-specific changes
Customer Monitoring OverridesCustomer-owned unsealed .xmlMonitor/rule enablement, thresholds, timing, alerts, collection, and monitoring-targeting groupsDiscovery overrides
Lab, Standard, and Strict templatesProduct-maintained public examples, not imported product dependenciesReviewed starter values and a manifest of the settings they changeCustomer names, credentials, destinations, or undisclosed active policy

The v2 generator produces two canonical override Management Packs:

  • <Organization>.HyperVPrivateCloud.Discovery.Overrides (or HyperVPrivateCloud.Discovery.Overrides for public starter packs); and
  • <Organization>.HyperVPrivateCloud.Monitoring.Overrides (or HyperVPrivateCloud.Monitoring.Overrides for public starter packs).

The organization prefix makes ownership clear and prevents a customer file from appearing to be a signed product artifact. The display name can use the organization's normal naming convention.

Microsoft recommends one unsealed override Management Pack for each sealed Management Pack being customized. This avoids coupling unrelated customizations during upgrade or removal. See Create a Management Pack for overrides.

Effective configuration flow ​

Rendering diagram…

The templates do not bypass administrator review. Applying a template means creating or updating customer-owned overrides after confirming topology, support, capacity, and operational intent.

Discovery override contract ​

Discovery settings are intentionally isolated because they affect object existence, relationship membership, workflow cardinality, and Distributed Application population.

Parameter familyIntended useRequired guardrail
EnabledInclude or exclude an optional supported discoveryRequired dependencies and seed discoveries cannot be disabled without a documented impact warning
IntervalSecondsChange discovery frequencyPublished minimum and maximum; timeout remains lower than interval
SyncTimeStagger compatible discoveriesOptional and consistently formatted when the module supports it
TimeoutSecondsBound provider or script executionLess than the schedule interval and tested under degraded providers
Scope or depthLimit expensive optional topologyExposed only where the result remains complete and semantically valid

Disabling a discovery does not necessarily remove objects that were already discovered. Removal of disabled class instances is a separate, potentially destructive administrative operation and must follow Microsoft's documented process only after the target and downstream impact are verified. See Apply overrides to object discoveries.

Monitoring override contract ​

Monitoring settings control evaluation and collection without changing the class model.

Parameter familyApplies toRequired documentation
EnabledMonitors and rulesDefault, reason, scope, and effect on health or data collection
Warning and critical thresholdsPerformance and state evaluationUnit, comparison direction, range, duration, and evidence source
Consecutive samples or durationStateful monitorsSampling relationship, state-transition delay, and failure/recovery behavior
Recovery threshold or hysteresisStateful monitorsRecovery semantics and protection against state flapping
Interval, synchronization, and timeoutMonitors and collection rulesUnits, safe bounds, expected cost, and cookdown implications
Alert generation, severity, and priorityAlert-producing workflowsHealth behavior, alert behavior, routing impact, and auto-resolution behavior
Collection enablement and frequencyPerformance and event rulesDatabase-volume impact, retention assumptions, and reporting dependencies

Internal script text, commands, provider paths, credentials, secure references, object keys, and module semantics are not exposed as overrides. An operator may tune policy, but cannot use an override to change the workflow into an unsupported program.

Targeting policy ​

Use the narrowest maintainable policy target, not the narrowest possible object.

  1. Use a class override only when the policy applies to every supported instance of that class.
  2. Prefer a group override for tiers, sites, hardware families, clusters, or workload classes.
  3. Use a specific-instance override only for a documented exception with an owner and review date.
  4. Validate the effective configuration when multiple overrides can apply.

Operations Manager applies class, group, and instance overrides at different levels of specificity. The product guide follows Microsoft's recommendation to prefer groups over individual objects for manageable policy. See Override a rule or monitor and Best practices for configuring overrides.

An unsealed Management Pack cannot reference a group in another unsealed Management Pack. A group used for Discovery overrides therefore belongs in the customer Discovery Overrides MP; a group used for Monitoring overrides belongs in the customer Monitoring Overrides MP. A future shared group library would have to be sealed and is not part of the initial product design.

Optional tuning templates ​

TemplateIntended environmentDesign posture
LabShort-lived validation and fault testingFaster supported discovery/evaluation and optional diagnostics where lab scale and data volume permit; never presented as a production baseline
StandardTypical production starting pointEvidence-backed product defaults with only documented, broadly applicable adjustments
StrictExplicitly designated critical servicesMore sensitive or frequent policy only where evidence, response capacity, and noise testing justify it

Each profile is delivered as public documentation, an explicit machine-readable tuning catalog, generated examples, and first-party unsealed profile MPs in the release. Customer mode assigns organization-owned IDs and display names. Public-profile mode assigns HCS profile IDs so reviewed packs can be packaged with a release. Import exactly one deployment-profile/tier pair for an environment; later adjustments belong in customer-owned overrides.

Deployment profiles ​

ProfileCapability composition
StandaloneCore only
ClusteredSANCluster and common SAN storage
ClusteredPureCluster, common SAN storage, and Pure Storage
ClusteredS2DCluster and S2D
HybridSANAndS2DCluster, common SAN storage, and S2D
HybridPureAndS2DCluster, common SAN storage, Pure Storage, and S2D
HyperVOverSMBCluster and File Services/SMB
NetworkATCNetwork ATC
VMMManagedVMM
SDNEnabledSDN
CompletePrivateCloudAll nine optional capabilities

The four required core MPs are implicit in every profile. A generated override MP references only the core and capability MPs used by that profile, plus exact external context libraries required by its override targets. Detecting both SAN and S2D, or multiple networking authorities at different layers, does not disable either selected capability.

Profile schema ​

Catalog schema 2.0 makes every target explicit. Each target declares its complete workflowRef, workflowId, contextRef, contextClassId, and—where applicable—local module ID. The generator does not construct workflow or class IDs from naming conventions. Settings name an explicit target set and supply reviewed Lab, Standard, and Strict values. The generator rejects unknown catalog or custom-profile schemas, unknown capabilities, missing tier values, duplicate aliases, and invalid targeting before producing output.

The generated override MP has two independent version facts:

  • Version is the customer- or profile-owned unsealed MP identity and defaults to 1.0.0.0.
  • ProductVersion is mandatory and must equal the installed sealed product version used in every product reference.

Changing the override MP version must never change its sealed product references. Release and CI tests generate different values for these fields and assert that each is written only to its intended XML elements.

The templates are versioned with the product release that defined their workflow IDs. A release must publish a profile change log and identify added, changed, retired, and no-longer-effective settings. Templates never contain credentials, notification endpoints, Run As assignments, or company-specific groups.

The committed .xml.example files are generated artifacts, not hand-maintained samples. Run src/hyper-v/scom-mp/tools/Update-HyperVPrivateCloudOverrideExamples.ps1 after changing the generator, catalog, or package profile. CI regenerates the 2 canonical solution override files in a temporary directory and rejects any byte difference. It also builds all product MPs and resolves every generated workflow, context, module, property, parameter, and reference. Generated examples use , , and ; governed release packaging replaces them with the real release identities before publishing import-ready .xml files.

Generate a customer-owned pair with:

powershell
./src/hyper-v/scom-mp/tools/New-HyperVPrivateCloudOverrideManagementPacks.ps1 `
  -OrganizationId Contoso `
  -OrganizationName 'Contoso' `
  -Version 1.0.0.0 `
  -ProductVersion 1.3.8.0 `
  -PublicKeyToken 54d0fb1159995c86 `
  -OutputPath ./out/contoso-overrides

The Standard public examples include a worked dynamic all-hosts group. It is defined and populated inside each Standard Monitoring Overrides MP, then used for core host monitor and performance-rule overrides. Custom schema-2.0 profiles may define Discovery and Monitoring groups and map target sets to them. Generation fails if the mapping would reference a group in the other unsealed MP, matching Microsoft's unsealed-MP reference constraint.

Lifecycle rules ​

Rendering diagram…
  • Never store an override, group, custom monitor, rule, view, or company knowledge in the Default Management Pack.
  • Never edit a sealed product MP or rebuild it with customer changes.
  • Export approved unsealed override MPs after every change and retain them in the customer's own controlled configuration repository.
  • Test both override MPs during product upgrade, but do not merge them merely to reduce file count.
  • Remove references in dependency order and test removal only in an isolated management group.
  • Treat discovery disablement and object cleanup as separate changes with separate validation.

Required release evidence ​

Before ADR 0027 can be accepted, validation must prove:

  • every public override parameter has stable naming, units, defaults, safe ranges, and knowledge;
  • the Discovery and Monitoring override MPs import, export, upgrade, and remove independently;
  • Lab, Standard, and Strict manifests reference only elements in the matching product version;
  • group and instance overrides produce the expected effective configuration;
  • an upgrade preserves representative customer overrides and reports obsolete settings; and
  • no test or product workflow writes to the Default Management Pack.

The public Management Pack administration guide turns this architecture into an operator procedure.

Released under the MIT License.