Validation errors on conflicting properties

complianceActiveStable

The validator rejects both zone filters when they are set together, leading to operational issues.

Opportunity Score (Heuristic (unvalidated)):68 · High · heuristic
First seen: 9/11/2026
Last seen: 9/13/2026

Score Breakdown

Heuristic ranking from public discussion signals — not a validated prediction of commercial opportunity, demand, or willingness to pay.

Composite 68/100 (High, unvalidated). Top driver: Willingness to pay (30% weight, 22.5 pts).

Frequency · 25% · 15.3 pts · XPS relevance61

Heuristic only — often urgency map or random scaffolding on ingest, not measured mention frequency. Maps to XPS relevance (with market size).

Severity · 25% · 18.8 pts · XPS quality75

LLM/mock judgment of intensity from title/summary text — not ops or ticket data. Maps to XPS quality (with willingness to pay).

Willingness to pay · 30% · 22.5 pts · XPS quality75

LLM/mock purchase-intent guess from text — not invoices, surveys, or paid seats. Maps to XPS quality.

Trend · 10% · 5.7 pts · XPS novelty57

Heuristic/scaffold (often random or fixed on insert) — not a verified mention trajectory. Maps to XPS novelty.

Market size · 10% · 5.5 pts · XPS relevance55

Heuristic/scaffold (often random or fixed) — not TAM research. Maps to XPS relevance (with frequency).

Catalog notes (not predictive analysis)

Validation errors on conflicting properties (compliance). Catalog heuristic opportunity score: 68/100 — a chosen formula over discussion-signal facets, not evidence of demand, conversion, or willingness to pay. Treat as browsing rank, not a commercial prediction.

The validator rejects both zone filters when they are set together, leading to operational issues.

Source Examples

azure/azure-cli Issues·Sep 11, 2026
“az vmss update retains the previous zone placement filter when switching between --include-zones and --exclude-zones ### Describe the bug A VM Scale Set can persist either `placement.includeZones` or `placement.excludeZones`. When `az vmss update` is used to switch to the opposite filter, Azure CLI preserves the filter loaded from the existing VMSS and adds the newly requested filter. For example: 1. The VMSS currently has `placement.includeZones`. 2. The user runs `az vmss update` with only `--exclude-zones`. 3. Generic update retains the existing `includeZones` value and adds `excludeZones`. 4. The model passed to the final VMSS create-or-update operation contains both mutually exclusive properties. The reverse transition—existing `excludeZones` followed by `--include-zones`—has the same defect. ### Actual behavior A deterministic test of the real update handler observed both properties at the final `VMSSCreate(command_args=...)` boundary: ```python { "zone_placement_policy": "Auto", "include_zones": ["1"], "exclude_zones": ["2"], } ``` The current validator rejects both flags when they are supplied in one invocation, but it cannot see an opposite filter already present in the VMSS state loaded by generic update. ### Related command `az vmss update` ### Errors A live Azure request was not performed during this investigation, so no local service error or `--debug` log was captured. Azure/azure-cli#33473 documents the Compute response when both properties are sent: ```text BadRequest: Both 'placement.includeZones' and 'placement.excludeZones' cannot be set. ``` ### Issue script & Debug output This was verified deterministically against current `dev` at commit `8bead7f93f086629efb160d56c25f508156925bf`. The regression test supplies an existing VMSS response containing one camelCase placement filter, invokes the actual `update_vmss` handler with only the opposite snake_case argument, mocks the final `VMSSCreate` operation boundary, and inspects the complete `command_args`. Both transition directions are covered. Test command: ```bash PYTHONPATH=src/azure-cli:src/azure-cli-core:src/azure-cli-testsdk \ python -m unittest \ azure.cli.command_modules.vm.tests.latest.test_custom_vm_commands.TestVmCustom.test_update_vmss_switches_zone_placement_filter ``` Before changing production code: ```text FF Ran 1 test FAILED (failures=2) ``` The failures specifically showed the stale opposite filter still present in the model passed to `VMSSCreate`. After the two-line normalization fix, the same test passes in both directions; the canonical `azdev` run reports `1 passed, 2 subtests passed`. Proposed test/fix commit: https://github.com/ryo-whaletech/azure-cli/commit/8f26c3f182c7f1dbd0b3adfd3d7e486c9d32791b No live `--debug` output is available; no Azure resources were changed for this source-level reproduction. ### Expected behavior Updating a VMSS from one zone placement filter to the other should not cause Azure CLI to send both mutually exclusive placement filters in the same request. ### Environment Summary ### Latest released version affected by source inspection ```text azure-cli 2.90.0 core 2.90.0 telemetry 1.1.0 Extensions: None ``` The `azure-cli-2.90.0` source tag (`dc50d475a00ded4a1a1980d4a10a9fbd9a750a81`) contains the same stale-filter update logic. This is source inspection only; a packaged 2.90.0 live failure was not claimed. ### Development verification ```text Repository: Azure/azure-cli Branch: dev Commit: 8bead7f93f086629efb160d56c25f508156925bf Python: 3.13.11 OS: macOS 26.6.2 arm64 ``` ### Live reproduction environment Not performed. No usable authenticated disposable Azure VMSS environment was available, so no live transition or sanitized `--debug` capture is included. ### Additional context - #31951 is the earlier overall Automatic Zone Placement feature request. - #33473 doc”
— ryo-whaletech↗

Competitive Landscape

  • Existing solutions are either too expensive or too limited
  • Most competitors target enterprise, leaving mid-market underserved
  • Community scripts and manual processes are the primary alternative

Recommended Next Steps

  1. ✓Validate pain intensity with 5-10 target customer interviews
  2. ✓Build minimal viable solution addressing the core workflow
  3. ✓Test pricing with early adopters from community forums

Related Pain Points

Target Customers

  • IT teams at mid-size organizations (100-2000 employees)
  • MSPs and consultants managing multiple client environments
  • Teams without dedicated specialist staff for this domain

Monetization Ideas

  1. 1SaaS subscription model ($99-$499/month depending on scale)
  2. 2Usage-based pricing aligned with value delivered
  3. 3Freemium tier to drive adoption and prove value