Skip to content

Add FOCUS schema tests and changelog entries#2136

Draft
flanakin wants to merge 7 commits intoflanakin/focus14from
flanakin/focus14-phase7-tests-changelog
Draft

Add FOCUS schema tests and changelog entries#2136
flanakin wants to merge 7 commits intoflanakin/focus14from
flanakin/focus14-phase7-tests-changelog

Conversation

@flanakin
Copy link
Copy Markdown
Collaborator

@flanakin flanakin commented May 6, 2026

Summary

Phase 7 (final) of FOCUS 1.4 work (parent: #2120). Adds Pester tests and changelog entries.

Stacked on phase 6 (#2135). This is the final phase before merging `flanakin/focus14` to `dev`.

Files

  • NEW: `src/powershell/Tests/Unit/HubsFocusSchemas.Tests.ps1` — 108 Pester tests covering:
    • FOCUS 1.3 columns added to `Costs_raw`.
    • `ContractCommitment_raw` defined with both 1.3 and 1.4 column sets.
    • Versioned transforms / final tables in `IngestionSetup_v1_3.kql` and `IngestionSetup_v1_4.kql`.
    • Versioned hub functions in `HubSetup_v1_3.kql` and `HubSetup_v1_4.kql`.
    • Union arms in `Costs_v1_3` (unions v1_0 + v1_2 + v1_3) and `Costs_v1_4` (unions v1_0 + v1_2 + v1_3 + v1_4).
    • Latest aliases pinned to v1_3 GA, not v1_4 preview.
    • Bicep `app.bicep` and `.build.config` wiring.
  • MODIFIED: `docs-mslearn/toolkit/changelog.md` — adds v15.0.0 entries for the hub schema work and refreshes the plugin entry under Update Claude Code plugin skill files for FOCUS 1.3 / 1.4 #2119.

Test plan

  • New Pester suite: 108/108 pass
  • Existing Pester suite: 192/192 pass (HubsIngestionQueries)
  • Doc-link tests: 1491/1491 pass

flanakin and others added 7 commits May 6, 2026 08:07
Adds IngestionSetup_v1_3.kql with Costs/Prices/CommitmentDiscountUsage/
Recommendations/Transactions transforms and final tables renamed for
FOCUS 1.3. Cost and Usage gains 8 new FOCUS 1.3 columns:
AllocatedMethodId/Details/ResourceId/ResourceName/Tags (data-generator
split cost allocation), ContractApplied (per-row contract commitment
application), ServiceProviderName + HostProviderName (replacing the
deprecated ProviderName/PublisherName, with empty-fallback for back
compat).

Costs_raw now carries the new columns so downstream v1_2 transforms
keep working and v1_3 transforms can read them directly. The v1_3
file is wired into the Bicep deployment alongside v1_0 and v1_2.

The unversioned Costs() function still aliases to v1_2 — phase 2
adds Costs_v1_3() and retargets Latest.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds HubSetup_v1_3.kql with Costs_v1_3, Prices_v1_3,
CommitmentDiscountUsage_v1_3, Recommendations_v1_3, and
Transactions_v1_3 that union the new Costs_final_v1_3 with the
existing Costs_final_v1_2 and Costs_final_v1_0 tables.

For v1_2 data unioned into the v1_3 view, the 8 new FOCUS 1.3 columns
default to null/empty and ServiceProviderName/HostProviderName are
populated from the deprecated ProviderName/PublisherName for back
compat. The same defaults apply to the v1_0 union arm on top of the
existing v1_0 -> v1_2 conversion.

HubSetup_Latest.kql aliases now point to *_v1_3 functions so the
unversioned Costs(), Prices(), etc. return the latest schema.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds the FOCUS 1.3 Contract Commitment supplemental dataset:
- ContractCommitment_raw table in IngestionSetup_RawTables.kql with
  the 14 mandatory FOCUS 1.3 columns plus standard hubs source
  metadata.
- ContractCommitment_transform_v1_3 + ContractCommitment_final_v1_3
  in IngestionSetup_v1_3.kql, with update policy mapping raw to final.
- ContractCommitment_v1_3 hub function in HubSetup_v1_3.kql that
  reads the final table directly (no older versions to union).
- Unversioned ContractCommitment alias in HubSetup_Latest.kql.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds IngestionSetup_v1_4.kql as a preview schema for FOCUS 1.4
working_draft. Cost and Usage drops the deprecated ProviderName
and PublisherName columns (removed in 1.4 per spec). Contract
Commitment expands by 14 new columns: BenefitCategory,
ContractCommitmentApplicability (JSON), Created, DiscountPercentage,
DurationType, FulfillmentInterval, LastUpdated, LifecycleStatus,
Model, OfferCategory, PaymentInterval, PaymentModel,
PaymentUpfrontPercentage, PricingCurrencyContractCommitmentCost.

The internal ProviderName/PublisherName fix-up logic in the Costs
transform stays so HostProviderName / ServiceProviderName can fall
back to those values when source data does not yet supply them.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds HubSetup_v1_4.kql with the v1_4-preview-shaped hub functions.
Costs_v1_4 unions Costs_final_v1_4, Costs_final_v1_3,
Costs_final_v1_2, and Costs_final_v1_0; ProviderName and
PublisherName are dropped from the v1_4 project list (removed in
1.4 per spec).

ContractCommitment_v1_4 unions ContractCommitment_final_v1_4 with
ContractCommitment_final_v1_3 and extends v1_3 data with empty/null
defaults for the 14 new FOCUS 1.4 columns.

HubSetup_Latest.kql is intentionally NOT retargeted to v1_4. Per
the preview convention in data-model.md, unversioned aliases stay
pinned to the latest GA schema (v1_3) until v1_4 promotes from
preview to GA.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Updates plugin skill files so plugin guidance reflects the new
hub schemas and FOCUS columns added in this milestone:

- finops-hubs.md: lists the full set of unversioned functions
  (CommitmentDiscountUsage, ContractCommitment included), notes
  the v1_0 / v1_2 / v1_3 / v1_4-preview versioned variants, and
  enumerates the FOCUS 1.3 column additions plus the 1.4
  ProviderName / PublisherName removal.
- finops-hubs-deployment.md: extends the supported FOCUS export
  versions to 1.0r2 / 1.2 / 1.2-preview (current Cost Management)
  and notes that hubs can also ingest 1.3 / 1.4-preview when
  Cost Management ships those exports.
- ftk-database-query.md: expands from four to six analytic
  functions, adds CommitmentDiscountUsage and ContractCommitment
  sections, and surfaces the FOCUS 1.3 columns on the Costs()
  reference table.
- ftk-output-style.md: adds FOCUS 1.3+ terminology preferences
  for ServiceProviderName, HostProviderName, and ContractApplied.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- HubsFocusSchemas.Tests.ps1: 108 Pester tests asserting the
  FOCUS 1.3 and 1.4-preview schema additions land where expected:
  Costs_raw additions, ContractCommitment_raw definition with
  both 1.3 and 1.4 columns, presence of versioned transforms
  and final tables in IngestionSetup_v1_3 / v1_4, presence of
  versioned hub functions in HubSetup_v1_3 / v1_4, the union
  arms in Costs_v1_3 and Costs_v1_4, the Latest aliases pinned
  to v1_3 (not preview v1_4), and the Bicep / build-config
  wiring.
- changelog.md: adds v15.0.0 hub entries describing the FOCUS
  1.3 GA and 1.4-preview schema additions, the new
  ContractCommitment dataset, the unversioned alias retarget,
  and the upgrade-procedure refresh. Adds a plugin entry for
  #2119. Updates ms.date to today.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings May 6, 2026 18:13
@flanakin flanakin requested a review from MSBrett as a code owner May 6, 2026 18:13
@microsoft-github-policy-service microsoft-github-policy-service Bot added the Needs: Review 👀 PR that is ready to be reviewed label May 6, 2026
@flanakin flanakin changed the base branch from flanakin/focus14-phase6-plugin to flanakin/focus14 May 6, 2026 23:00
@flanakin flanakin marked this pull request as draft May 6, 2026 23:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs: Review 👀 PR that is ready to be reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants