Skip to content

Add FOCUS schema tests and changelog entries#2136

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

Add FOCUS schema tests and changelog entries#2136
flanakin wants to merge 7 commits into
flanakin/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
@flanakin flanakin added this to the v15 milestone May 15, 2026
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