From 60c147ef2b6d483ebe2c9864dc41fd3e9439398f Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 26 Aug 2026 11:38:24 -0700 Subject: [PATCH 1/9] docs: prepare v15 release documentation - Fix stale changelog: correct release date, promote the fully-merged Unreleased content into the v15 section, add FinOps alerts and Open data tool sections. - Update what's new blurbs across all marketing pages for v15. - Add the missing InstanceSizeFlexibility table to the hubs data model. - Set up docs for the new FinOps toolkit agent plugin: MS Learn overview page, TOC entry, toolkit overview listing, marketing page and gallery tile, and an advisory council seat. - Standardize tool ordering (Hubs, Power BI, Workbooks, Alerts, Optimization Engine, Agent plugin, PowerShell, Bicep, Open data) consistently across the TOC, toolkit overview, and marketing gallery. Co-Authored-By: Claude Sonnet 5 --- docs-mslearn/TOC.yml | 6 +- .../finops-toolkit-agent-plugin-overview.md | 86 +++++++++++++++ docs-mslearn/toolkit/changelog.md | 103 ++++++------------ .../toolkit/finops-toolkit-overview.md | 4 +- docs-mslearn/toolkit/hubs/data-model.md | 8 +- docs-wiki/Advisory-council.md | 1 + docs/README.md | 15 ++- docs/agent-plugin.md | 55 ++++++++++ docs/alerts.md | 6 +- docs/guide.md | 4 +- docs/hubs.md | 4 +- docs/open-data.md | 4 +- docs/optimization-engine.md | 4 +- docs/power-bi.md | 4 +- docs/powershell.md | 4 +- docs/workbooks.md | 4 +- 16 files changed, 218 insertions(+), 94 deletions(-) create mode 100644 docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md create mode 100644 docs/agent-plugin.md diff --git a/docs-mslearn/TOC.yml b/docs-mslearn/TOC.yml index 052ef93eb..206ba4c28 100644 --- a/docs-mslearn/TOC.yml +++ b/docs-mslearn/TOC.yml @@ -216,8 +216,8 @@ href: toolkit/optimization-engine/troubleshooting.md - name: Reference href: toolkit/optimization-engine/reference.md - - name: Open data - href: toolkit/open-data.md + - name: Agent plugins + href: toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md - name: PowerShell items: - name: All commands @@ -278,6 +278,8 @@ href: toolkit/bicep-registry/modules.md - name: Scheduled actions href: toolkit/bicep-registry/scheduled-actions.md + - name: Open data + href: toolkit/open-data.md - name: Data Lake Storage connectivity href: toolkit/data-lake-storage-connectivity.md - name: Help + support diff --git a/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md b/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md new file mode 100644 index 000000000..001eb536b --- /dev/null +++ b/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md @@ -0,0 +1,86 @@ +--- +title: FinOps toolkit agent plugin overview +description: The FinOps toolkit agent plugin brings AI-powered cloud financial management to Claude Code and GitHub Copilot CLI. +author: flanakin +ms.author: micflan +ms.date: 08/14/2026 +ms.topic: concept-article +ms.service: finops +ms.subservice: finops-toolkit +ms.reviewer: msbrett +#customer intent: As a FinOps practitioner, I need to learn about the FinOps toolkit agent plugin. +--- + +# FinOps toolkit agent plugin + +The FinOps toolkit agent plugin brings AI-powered cloud financial management to your coding agent. It works with both [Claude Code](https://claude.com/claude-code) and [GitHub Copilot CLI](https://docs.github.com/copilot/how-tos/set-up/install-copilot-cli), pairing role-specific agents, ready-to-run commands, and a FinOps hubs query skill with a read-only [Azure MCP server](https://github.com/Azure/azure-mcp) so you can analyze cost data, review recommendations, and manage FinOps hubs without leaving your terminal. + +## Installation + +Install the plugin from the FinOps toolkit repository: + +```bash +# Claude Code +claude plugin add microsoft/finops-toolkit + +# GitHub Copilot CLI +copilot plugin install microsoft/finops-toolkit +``` + +The plugin registers an Azure MCP server scoped to the Kusto namespace in read-only mode, so it can query FinOps hubs data without being able to modify your environment. + +## What's included + +### Agents + +| Agent | Description | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Chief Financial Officer** | Executive-level guidance across financial strategy, capital allocation, risk management, budgeting, forecasting, and cost optimization. | +| **FinOps practitioner** | Domain expertise on FinOps principles, cost allocation, showback/chargeback models, and the FinOps Framework maturity model. | +| **FinOps hubs database query** | Queries cost data, resource metadata, pricing, regional data, and service mappings from a FinOps hub's Data Explorer database. | +| **FinOps hubs agent** | Deploys, upgrades, configures, and troubleshoots FinOps hubs, including Cost Management exports and hub architecture questions. | +| **Azure capacity manager** | Azure capacity evidence for FinOps work: quota analysis, capacity reservation groups, SKU availability, region and zone access, and coordinating capacity guarantees with pricing commitments. | + +### Commands + +| Command | Description | +| ----------------------- | -------------------------------------------------------------------------------------------------------------- | +| `/ftk-hubs-connect` | Discover FinOps hub instances via Azure Resource Graph, connect to a cluster, and save environment settings. | +| `/ftk-hubs-healthCheck` | Check a deployed hub's version against the latest stable and dev releases and validate data freshness. | +| `/ftk-mom-report` | Autonomous month-over-month cost analysis with anomaly detection, forecasting, and actionable recommendations. | +| `/ftk-ytd-report` | Comprehensive fiscal year-to-date cost analysis with a forecast through your organization's fiscal year end. | + +### Skill and query catalog + +The **finops-toolkit** skill triggers on FinOps hubs, KQL, and Azure Data Explorer topics and provides task routing, a query catalog, and schema guidance for working with a FinOps hub's `Costs()`, `Prices()`, `Recommendations()`, and `Transactions()` functions. + +## Required permissions + +- [Azure CLI](/cli/azure/install-azure-cli) authenticated (`az login`). +- Azure RBAC permissions for the Cost Management APIs you want to query or manage. +- For FinOps hubs queries: Database Viewer access to the hub's Azure Data Explorer cluster. + +## Give feedback + +Let us know how we're doing with a quick review. We use these reviews to improve and expand FinOps tools and resources. + + +> [!div class="nextstepaction"] +> [Give feedback](https://portal.azure.com/#view/HubsExtension/InProductFeedbackBlade/extensionName/FinOpsToolkit/cesQuestion/How%20easy%20or%20hard%20is%20it%20to%20use%20the%20FinOps%20toolkit%20agent%20plugin%3F/cvaQuestion/How%20valuable%20is%20the%20FinOps%20toolkit%20agent%20plugin%3F/surveyId/FTK/bladeName/AgentPlugin/featureName/Overview) + + +If you're looking for something specific, vote for an existing or create a new idea. Share ideas with others to get more votes. We focus on ideas with the most votes. + + +> [!div class="nextstepaction"] +> [Vote on or suggest ideas](https://github.com/microsoft/finops-toolkit/issues?q=is%3Aissue%20is%3Aopen%20sort%3Areactions-%2B1-desc) + + +
+ +## Related content + +- [FinOps hubs](../hubs/finops-hubs-overview.md) +- [FinOps hubs data model](../hubs/data-model.md) + +
diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index c9a66fcd1..5ef117a7e 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -3,7 +3,7 @@ title: FinOps toolkit changelog description: Review the latest features and enhancements in the FinOps toolkit, including updates to FinOps hubs, Power BI reports, and more. author: MSBrett ms.author: brettwil -ms.date: 09/07/2026 +ms.date: 09/02/2026 ms.topic: reference ms.service: finops ms.subservice: finops-toolkit @@ -25,85 +25,26 @@ This article summarizes the features and enhancements in each release of the Fin The following section lists features and enhancements that are currently in development. -### [FinOps hubs](hubs/finops-hubs-overview.md) - -- **Added** - - Added VNet and private network modes, including opt-in NAT Gateway support for private mode; NAT Gateway incurs additional cost when enabled ([#2163](https://github.com/microsoft/finops-toolkit/pull/2163)). -- **Changed** - - Clarified that the FinOps toolkit exclusively manages the FinOps hub virtual network and documented customer-managed private endpoints as the preferred private-access topology, with virtual network peering as a secondary option ([#2156](https://github.com/microsoft/finops-toolkit/issues/2156)). - - Replaced redundant `tolower()` comparisons in hub KQL with case-insensitive operators (`has`, `=~`, `!~`) so the engine can use the term index instead of scanning every row ([#2213](https://github.com/microsoft/finops-toolkit/issues/2213)). - - Replaced whole-term `contains` matches with `has` across hub KQL and the query catalog (resource ID paths, licensing phrases, SKU description terms) and added a per-row operator-equivalence regression harness with unit test coverage ([#2220](https://github.com/microsoft/finops-toolkit/pull/2220)). -- **Fixed** - - Fixed managed exports failing with an `Unauthorized` error because the Role Based Access Control Administrator role was never assigned to the Data Factory identity. Roles requested by a hub app are now assigned on the publisher storage account even when the app doesn't create the storage account itself ([#2253](https://github.com/microsoft/finops-toolkit/issues/2253)). - - Fixed private-network deployments that Azure Policy blocked when `defaultOutboundAccess` was omitted. Private mode subnets now set it to `false`, while an Azure Files private endpoint supports deployment-script storage and the NAT Gateway provides required container egress ([#2258](https://github.com/microsoft/finops-toolkit/issues/2258), [#2259](https://github.com/microsoft/finops-toolkit/pull/2259)). - - Fixed the `ContractedCost` recompute guard to compare with a null-safe tolerance instead of exact float equality, eliminating millions of no-op rewrites that polluted the `x_SourceValues` audit trail while preserving the null-cost backfill and no longer overwriting an existing cost when the unit price is missing ([#2216](https://github.com/microsoft/finops-toolkit/issues/2216)). - - Fixed the SQL VMs without Azure Hybrid Benefit recommendation query to join on the SQL VM `virtualMachineResourceId` instead of a case-sensitive VM name match that skipped VMs with uppercase names and dropped duplicate names, and made all Azure Resource Graph join kinds explicit so no query relies on the `innerunique` default ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - - Switched dimension enrichment in the v1_0/v1_2 ingestion transforms (`PricingUnits`, `Regions`, `ResourceTypes`, `Services`) from `join` to the broadcast-optimized `lookup` operator and deduplicated the `Services` mapping per resource type to prevent cost row fan-out ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - - Fixed the v1_0 and v1_2 price transforms setting `x_CommitmentDiscountSpendEligibility` from reservation meters and `x_CommitmentDiscountUsageEligibility` from savings plan meters, the opposite of the FOCUS `CommitmentDiscountCategory` value the same transform assigns. The spend column now reports savings plan pricing and the usage column reports reservation pricing. Prices ingested after upgrading carry the corrected values; rows ingested earlier keep the old values until they are reingested ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)). - -### [FinOps workbooks](workbooks/finops-workbooks-overview.md) - -- **Fixed** - - Fixed the savings plan workbook summary and details queries silently dropping all but one recommendation per subscription due to an implicit `innerunique` join ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - - Fixed the AHB workbook "VM Latest Change Last 7 days" tile, which joined the `resourcechanges` record id against the resource id and always returned no rows, and the SQL VM queries, which never matched VMs with uppercase names ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - - Changed the savings plan workbook subscription name joins to `leftouter` so a recommendation is still shown when its subscription is missing from `resourcecontainers` ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - -### [FinOps alerts](alerts/finops-alerts-overview.md) - -- **Fixed** - - Made the idle application gateway and idle public IP query join kinds explicit so they no longer rely on the `innerunique` default ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - -### [Power BI reports](power-bi/reports.md) - -- **Changed** - - Switched the InstanceSizeFlexibility table in the storage and KQL shared datasets from the retired `ccmstorageprod` AutofitComboMeterData.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file, joined to reservation recommendations on the unique ARM SKU name ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - -### [Optimization Engine](optimization-engine/overview.md) - -- **Added** - - Added a comprehensive [Azure Optimization Engine reference](optimization-engine/reference.md) for runbooks, schedules, variables, Log Analytics tables, and SQL Database tables ([#1271](https://github.com/microsoft/finops-toolkit/issues/1271)). -- **Changed** - - Switched the reservations and benefits workbooks from the retired `ccmstorageprod` isfratioblob.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). -- **Fixed** - - Fixed a regression in the `AzureOptimizationConsumptionV1_CL` schema that was breaking the Reservations Usage workbook ([#2301](https://github.com/microsoft/finops-toolkit/issues/2301)). - -### [PowerShell module](powershell/powershell-commands.md) - -- **Fixed** - - Fixed [Start-FinOpsCostExport](powershell/cost/start-finopscostexport.md) exporting the wrong period for anyone running in a positive UTC offset. `-StartDate` and `-EndDate` are now treated as UTC calendar dates instead of being time zone converted, so the days you request are the days that get exported. Previously, local midnight converted to the previous UTC day, which moved the period back a day and made `-Backfill` run one extra month ([#2255](https://github.com/microsoft/finops-toolkit/issues/2255)). - -### [Open data](open-data.md) updates - -**[Instance size flexibility](open-data.md#instance-size-flexibility)** - -- **Added** - - Added a new [Instance size flexibility](open-data.md#instance-size-flexibility) dataset that maps each ARM SKU to its instance size flexibility group and ratio, sourced from the Azure Reservations Catalogs API. It replaces the deprecated ISF ratio files hosted on `ccmstorageprod.blob.core.windows.net` ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - -**[Commitment discount eligibility](open-data.md#commitment-discount-eligibility)** - -- **Fixed** - - Fixed the commitment discount eligibility dataset refresh so it is reproducible and complete; retired meters now age out and previously missed meters are included ([#2164](https://github.com/microsoft/finops-toolkit/pull/2164)). - - Fixed the weekly commitment discount eligibility refresh timing out before it could publish, which left the dataset unchanged since it first shipped in v14. The refresh now walks each price type directly instead of sharding by service family, and verifies completeness by comparing two independent traversals before writing ([#2251](https://github.com/microsoft/finops-toolkit/pull/2251)). - - Fixed `x_CommitmentDiscountSpendEligibility` and `x_CommitmentDiscountUsageEligibility` carrying each other's values. FOCUS classifies a reservation as a usage commitment (committed to a quantity of usage) and a savings plan as a spend commitment (committed to an amount of money), so the spend column now reports savings plan pricing and the usage column reports reservation pricing. The dataset shipped with the two reversed from v14 ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)). - -->
## v15 -_Released June 2026_ +_Released August 2026_ ### [Implementing FinOps guide](../implementing-finops-guide.md) v15 - **Added** + - Added a [FinOps toolkit ecosystem page](https://microsoft.github.io/finops-toolkit/ecosystem) listing independent tools and organizations that build on or support the FinOps toolkit. - **Changed** + - Aligned FinOps Framework capability names and links across guidance to current FinOps Framework terminology, including Usage optimization and Governance, policy, and risk ([#2170](https://github.com/microsoft/finops-toolkit/pull/2170)). - **Fixed** - - Corrected stale and incorrect descriptions for `BilledCost`, `EffectiveCost`, `BillingCurrency`, `BillingProfileId`, `BillingProfileName`, `CommitmentDiscountQuantity`, `ListUnitPrice`, `PricingQuantity`, `PricingUnitDescription`, and `TotalSavingsRunningTotal` in the [data dictionary](help/data-dictionary.md) to align with FOCUS 1.2 ([#2112](https://github.com/microsoft/finops-toolkit/pull/2112)). + - Corrected stale and incorrect descriptions for `BilledCost`, `EffectiveCost`, `BillingCurrency`, `BillingProfileId`, `BillingProfileName`, `CommitmentDiscountQuantity`, `ListUnitPrice`, `PricingQuantity`, `PricingUnitDescription`, and `TotalSavingsRunningTotal` in the [data dictionary](help/data-dictionary.md) to align with FOCUS 1.2. ### FinOps toolkit agent plugins v15 @@ -116,17 +57,28 @@ _Released June 2026_ - **Added** - Added a [Run hubs locally](hubs/run-hubs-locally.md) guide to stand up a FinOps hub in a local Kusto emulator container and ingest cost data using the same KQL, transforms, and open data as a deployed hub. - Added a build-generated `finops-hub-local-opendata.kql` release artifact that loads the open data reference tables from CSV, so the local hub guide stays in sync with published open data instead of hard-coding schemas. + - Added VNet and private network modes, including opt-in NAT Gateway support for private mode; NAT Gateway incurs additional cost when enabled ([#2163](https://github.com/microsoft/finops-toolkit/pull/2163)). - **Changed** - Added a callout to the `config_RunBackfillJob` backfill option clarifying that it isn't supported on Microsoft Customer Agreement (MCA) billing accounts or billing profiles ([#2113](https://github.com/microsoft/finops-toolkit/issues/2113)). + - Clarified that the FinOps toolkit exclusively manages the FinOps hub virtual network and documented customer-managed private endpoints as the preferred private-access topology, with virtual network peering as a secondary option ([#2156](https://github.com/microsoft/finops-toolkit/issues/2156)). + - Replaced redundant `tolower()` comparisons in hub KQL with case-insensitive operators (`has`, `=~`, `!~`) so the engine can use the term index instead of scanning every row ([#2213](https://github.com/microsoft/finops-toolkit/issues/2213)). + - Replaced whole-term `contains` matches with `has` across hub KQL and the query catalog (resource ID paths, licensing phrases, SKU description terms) and added a per-row operator-equivalence regression harness with unit test coverage ([#2220](https://github.com/microsoft/finops-toolkit/pull/2220)). + - Switched dimension enrichment in the v1_0/v1_2 ingestion transforms (`PricingUnits`, `Regions`, `ResourceTypes`, `Services`) from `join` to the broadcast-optimized `lookup` operator and deduplicated the `Services` mapping per resource type to prevent cost row fan-out. - **Fixed** - Fixed Data Factory ingestion memory pressure during emptiness filtering. - Replaced `isnotempty(strcat(x_SkuMeterId, x_SkuOfferId))` with separate `isnotempty()` checks in FinOps hub ingestion scripts to avoid temporary string allocation. - - Hardened the reservation price backfill to select the highest on-demand price (`max()` instead of `min()`) when duplicate price rows collapse under a single reservation price lookup key, preventing understated commitment discount savings ([#2189](https://github.com/microsoft/finops-toolkit/pull/2189)). + - Hardened the reservation price backfill to select the highest on-demand price (`max()` instead of `min()`) when duplicate price rows collapse under a single reservation price lookup key, preventing understated commitment discount savings. + - Fixed the `ContractedCost` recompute guard to compare with a null-safe tolerance instead of exact float equality, eliminating millions of no-op rewrites that polluted the `x_SourceValues` audit trail while preserving the null-cost backfill and no longer overwriting an existing cost when the unit price is missing ([#2216](https://github.com/microsoft/finops-toolkit/issues/2216)). + - Fixed the SQL VMs without Azure Hybrid Benefit recommendation query to join on the SQL VM `virtualMachineResourceId` instead of a case-sensitive VM name match that skipped VMs with uppercase names and dropped duplicate names, and made all Azure Resource Graph join kinds explicit so no query relies on the `innerunique` default. + - Fixed managed exports failing with an `Unauthorized` error because the Role Based Access Control Administrator role was never assigned to the Data Factory identity. Roles requested by a hub app are now assigned on the publisher storage account even when the app doesn't create the storage account itself ([#2253](https://github.com/microsoft/finops-toolkit/issues/2253)). + - Fixed private-network deployments that Azure Policy blocked when `defaultOutboundAccess` was omitted. Private mode subnets now set it to `false`, while an Azure Files private endpoint supports deployment-script storage and the NAT Gateway provides required container egress ([#2258](https://github.com/microsoft/finops-toolkit/issues/2258), [#2259](https://github.com/microsoft/finops-toolkit/pull/2259)). + - Fixed the v1_0 and v1_2 price transforms setting `x_CommitmentDiscountSpendEligibility` from reservation meters and `x_CommitmentDiscountUsageEligibility` from savings plan meters, the opposite of the FOCUS `CommitmentDiscountCategory` value the same transform assigns. The spend column now reports savings plan pricing and the usage column reports reservation pricing. Prices ingested after upgrading carry the corrected values; rows ingested earlier keep the old values until they are reingested ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)). ### [Power BI reports](power-bi/reports.md) v15 - **Changed** - Updated report labels and documentation to use current FinOps Framework capability names, including Usage optimization and Governance, policy, and risk ([#2170](https://github.com/microsoft/finops-toolkit/pull/2170)). + - Switched the InstanceSizeFlexibility table in the storage and KQL shared datasets from the retired `ccmstorageprod` AutofitComboMeterData.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file, joined to reservation recommendations on the unique ARM SKU name ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - Fixed Power BI storage report refresh errors caused by ISO 8601 duration `x_SkuTerm` values (like `P3Y`) and empty strings in cost exports ([#2174](https://github.com/microsoft/finops-toolkit/issues/2174)). - Paginate Azure Resource Graph queries by subscription to mitigate [payload size limit](help/errors.md#response-payload-size-is-and-has-exceeded-the-limit) errors in the [Governance](power-bi/governance.md) and [Workload optimization](power-bi/workload-optimization.md) reports ([#1768](https://github.com/microsoft/finops-toolkit/issues/1768)). Queries still surface a payload size error (rather than silently returning truncated results) if a single batch of subscriptions exceeds the limit; see [Reduce the batch size](help/errors.md#option-1-reduce-the-batch-size) for the mitigation. As part of this change, the `AdvisorRecommendations` and `AdvisorReservationRecommendations` tables now return complete (non-truncated) results per batch, matching every other batched table; previously these two tables silently dropped rows beyond the payload limit instead of erroring. @@ -135,16 +87,23 @@ _Released June 2026_ - **Changed** - Updated workbook labels and documentation to use current FinOps Framework capability names, including Usage optimization and Governance, policy, and risk ([#2170](https://github.com/microsoft/finops-toolkit/pull/2170)). +- **Fixed** + - Fixed the savings plan workbook summary and details queries silently dropping all but one recommendation per subscription due to an implicit `innerunique` join ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). + - Fixed the AHB workbook "VM Latest Change Last 7 days" tile, which joined the `resourcechanges` record id against the resource id and always returned no rows, and the SQL VM queries, which never matched VMs with uppercase names ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). + - Fixed the savings plan workbook subscription name join to use `leftouter` so a recommendation is still shown when its subscription is missing from `resourcecontainers` ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). -### [Data dictionary](help/data-dictionary.md) updates +### [FinOps alerts](alerts/finops-alerts-overview.md) v15 - **Fixed** - - Corrected stale and incorrect descriptions for `BilledCost`, `EffectiveCost`, `BillingCurrency`, `BillingProfileId`, `BillingProfileName`, `CommitmentDiscountQuantity`, `ListUnitPrice`, `PricingQuantity`, `PricingUnitDescription`, and `TotalSavingsRunningTotal` to align with FOCUS 1.2 ([#2112](https://github.com/microsoft/finops-toolkit/pull/2112)). + - Made the idle application gateway and idle public IP query join kinds explicit so they no longer rely on the `innerunique` default. ### [Optimization engine](optimization-engine/overview.md) v15 +- **Added** + - Added a comprehensive [Azure Optimization Engine reference](optimization-engine/reference.md) for runbooks, schedules, variables, Log Analytics tables, and SQL Database tables ([#1271](https://github.com/microsoft/finops-toolkit/issues/1271)). - **Changed** - Migrated Log Analytics ingestion from the Data Collection API (to be deprecated in September 2026) to a Data Collection Rule, Ingestion API-based solution. + - Switched the reservations and benefits workbooks from the retired `ccmstorageprod` isfratioblob.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - Removed call to Azure Classic administrators endpoint (deprecated on May 1, 2026) from Azure RBAC assignments exports ([#2142](https://github.com/microsoft/finops-toolkit/issues/2142)). @@ -157,6 +116,16 @@ _Released June 2026_ - **Fixed** - Fixed [Get-FinOpsCostExport](powershell/cost/get-finopscostexport.md) `-RunHistory` to return the complete run history ([#2063](https://github.com/microsoft/finops-toolkit/issues/2063)). - Bumped the `Az.Accounts` required-module minimum to 2.17.0 so dependency resolution can't land on a version missing the `Get-AzAccessToken -AsSecureString` parameter that `Invoke-Rest` relies on ([#2185](https://github.com/microsoft/finops-toolkit/issues/2185)). + - Fixed [Start-FinOpsCostExport](powershell/cost/start-finopscostexport.md) exporting the wrong period for anyone running in a positive UTC offset. `-StartDate` and `-EndDate` are now treated as UTC calendar dates instead of being time zone converted, so the days you request are the days that get exported. Previously, local midnight converted to the previous UTC day, which moved the period back a day and made `-Backfill` run one extra month ([#2255](https://github.com/microsoft/finops-toolkit/issues/2255)). + +### [Open data](open-data.md) v15 + +- **Added** + - Added a new [Instance size flexibility](open-data.md#instance-size-flexibility) dataset that maps each ARM SKU to its instance size flexibility group and ratio, sourced from the Azure Reservations Catalogs API. It replaces the deprecated ISF ratio files hosted on `ccmstorageprod.blob.core.windows.net` ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). +- **Fixed** + - Fixed the [commitment discount eligibility](open-data.md#commitment-discount-eligibility) dataset refresh so it's reproducible and complete; retired meters now age out and previously missed meters are included ([#2164](https://github.com/microsoft/finops-toolkit/pull/2164)). + - Fixed the weekly commitment discount eligibility refresh timing out before it could publish, which left the dataset unchanged since it first shipped in v14. The refresh now walks each price type directly instead of sharding by service family, and verifies completeness by comparing two independent traversals before writing ([#2251](https://github.com/microsoft/finops-toolkit/pull/2251)). + - Fixed `x_CommitmentDiscountSpendEligibility` and `x_CommitmentDiscountUsageEligibility` carrying each other's values. FOCUS classifies a reservation as a usage commitment (committed to a quantity of usage) and a savings plan as a spend commitment (committed to an amount of money), so the spend column now reports savings plan pricing and the usage column reports reservation pricing. The dataset shipped with the two reversed from v14 ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)). > [!div class="nextstepaction"] diff --git a/docs-mslearn/toolkit/finops-toolkit-overview.md b/docs-mslearn/toolkit/finops-toolkit-overview.md index 22f68c7fb..99e1cc6e4 100644 --- a/docs-mslearn/toolkit/finops-toolkit-overview.md +++ b/docs-mslearn/toolkit/finops-toolkit-overview.md @@ -3,7 +3,7 @@ title: FinOps toolkit overview description: Learn how the FinOps toolkit helps you automate and extend the Microsoft Cloud with starter kits, scripts, and advanced solutions to improve FinOps practices. author: flanakin ms.author: micflan -ms.date: 08/05/2026 +ms.date: 08/14/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit @@ -31,7 +31,9 @@ The FinOps toolkit is an ever-evolving collection of tools and resources. The fo - [FinOps workbooks](./workbooks/finops-workbooks-overview.md) – Central hub for cost optimization. - [Cost optimization workbook](./workbooks/optimization.md) – Central hub for cost optimization. - [Governance workbook](./workbooks/governance.md) – Central hub for governance. +- [FinOps alerts](./alerts/finops-alerts-overview.md) – Automate cost optimization by managing idle resources. - [Azure Optimization Engine](./optimization-engine/overview.md) – Extensible solution for custom optimization recommendations. +- [Agent plugin](./agent-plugin/finops-toolkit-agent-plugin-overview.md) – AI-powered cloud financial management for Claude Code and GitHub Copilot CLI. - [PowerShell module](./powershell/powershell-commands.md) – Automate and manage FinOps solutions and capabilities. - [Bicep Registry modules](./bicep-registry/modules.md) – Official repository for Bicep modules. - [Open data](open-data.md) – Data available for anyone to access, use, and share without restriction. diff --git a/docs-mslearn/toolkit/hubs/data-model.md b/docs-mslearn/toolkit/hubs/data-model.md index e06a19519..aeb54180d 100644 --- a/docs-mslearn/toolkit/hubs/data-model.md +++ b/docs-mslearn/toolkit/hubs/data-model.md @@ -3,7 +3,7 @@ title: FinOps hubs data model description: Learn about the tables and functions available in FinOps hubs to build your own queries, reports, and dashboards. author: flanakin ms.author: micflan -ms.date: 04/01/2026 +ms.date: 08/14/2026 ms.topic: reference ms.service: finops ms.subservice: finops-toolkit @@ -473,6 +473,12 @@ Examples:
+## InstanceSizeFlexibility table + +The **InstanceSizeFlexibility** table in Power BI and Data Explorer is populated from the [Instance size flexibility open data file](../open-data.md#instance-size-flexibility). This table is used to identify reservation-eligible SKUs that share instance size flexibility with a purchased reservation. + +
+ ## ManagementGroups table The **ManagementGroups** table in Power BI reports that queries Azure management groups from Azure Resource Graph. diff --git a/docs-wiki/Advisory-council.md b/docs-wiki/Advisory-council.md index dbbd5eebc..874f24737 100644 --- a/docs-wiki/Advisory-council.md +++ b/docs-wiki/Advisory-council.md @@ -61,6 +61,7 @@ This currently includes the following people: | Seat | Member | | ------------------------------------ | --------------------- | +| Agent plugin | Brett Wilson | | Azure Data Explorer | Brad Watts | | Azure Optimization Engine | Helder Pinto | | Bicep Registry | Vacant | diff --git a/docs/README.md b/docs/README.md index 03ac79baf..6852359a2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,9 +18,9 @@ Automate and extend the Microsoft Cloud with starter kits, scripts, and advanced ---
-

What's new in April 2026v14

+

What's new in August 2026v15

- April adds recommendations ingestion and a Copilot Studio agent template for FinOps hubs, a new commitment discount eligibility open dataset, simplified hub deployment UI, Azure Optimization Engine pricesheet API upgrade, and minor improvements in Power BI, FinOps workbooks, and the PowerShell module. + August adds a shared FinOps Toolkit plugin for Claude Code and GitHub Copilot CLI, private networking support for FinOps hubs, a new Instance size flexibility open dataset, several KQL performance and correctness fixes across hubs, workbooks, and alerts, and minor improvements in Power BI, the Optimization Engine, and the PowerShell module.

See all changes

@@ -61,9 +61,9 @@ Automate and extend the Microsoft Cloud with starter kits, scripts, and advanced Learn more
-
🌐 Open data
-
Useful data for anyone to access, use, and share.
- Learn more +
🤖 Agent plugin
+
AI-powered cloud financial management for Claude Code and GitHub Copilot CLI.
+ Learn more
🖥️ PowerShell
@@ -75,6 +75,11 @@ Automate and extend the Microsoft Cloud with starter kits, scripts, and advanced
Official repository for Bicep modules.
Learn more
+
+
🌐 Open data
+
Useful data for anyone to access, use, and share.
+ Learn more +
Download FinOps toolkit {% include ftktag.txt %} diff --git a/docs/agent-plugin.md b/docs/agent-plugin.md new file mode 100644 index 000000000..3ab7a24f0 --- /dev/null +++ b/docs/agent-plugin.md @@ -0,0 +1,55 @@ +--- +layout: default +title: Agent plugin +browser: FinOps toolkit agent plugin - Automate your FinOps efforts +nav_order: 65 +description: 'The FinOps toolkit agent plugin brings AI-powered cloud financial management to Claude Code and GitHub Copilot CLI.' +permalink: /agent-plugin +#customer intent: As a Finops practitioner, I need to learn about the FinOps toolkit agent plugin +--- + +FinOps toolkit agent plugin +Bring AI-powered cloud financial management to Claude Code and GitHub Copilot CLI. +{: .fs-6 .fw-300 } + +Install +Documentation + +--- + +The FinOps toolkit agent plugin pairs role-specific agents, ready-to-run commands, and a FinOps hubs query skill with a read-only Azure MCP server, so you can analyze cost data, review recommendations, and manage FinOps hubs without leaving your terminal. + +
+

What's new in August 2026v15

+

+ The FinOps toolkit agent plugin is new this release: a shared plugin for Claude Code and GitHub Copilot CLI with 5 agents (CFO, FinOps practitioner, database query, hubs agent, and Azure capacity manager), 4 commands, a FinOps hubs KQL skill, and a read-only Azure MCP server. +

+

See all changes

+
+ + + +## What's included + +- **Agents** – Chief Financial Officer, FinOps practitioner, FinOps hubs database query, FinOps hubs agent, and Azure capacity manager. +- **Commands** – `/ftk-hubs-connect`, `/ftk-hubs-healthCheck`, `/ftk-mom-report`, and `/ftk-ytd-report`. +- **Skill** – A FinOps hubs KQL skill with task routing, a pre-built query catalog, and schema guidance. +- **MCP server** – A read-only [Azure MCP server](https://github.com/Azure/azure-mcp) scoped to the Kusto namespace for querying FinOps hubs data. + + + +## Install + +```bash +# Claude Code +claude plugin add microsoft/finops-toolkit + +# GitHub Copilot CLI +copilot plugin install microsoft/finops-toolkit +``` + +
+ +## Learn more + +[Read the full documentation](https://learn.microsoft.com/cloud-computing/finops/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview) for required permissions and setup details. diff --git a/docs/alerts.md b/docs/alerts.md index 24e06851b..2d33581e0 100644 --- a/docs/alerts.md +++ b/docs/alerts.md @@ -19,15 +19,13 @@ Accelerate your cost optimization efforts with scheduled notifications that cont Designed with flexibility in mind, FinOps alerts run on a fully configurable schedule, continuously scanning your selected subscriptions for idle resources. - ## Actionable insights for smarter cloud management diff --git a/docs/guide.md b/docs/guide.md index abe565fdb..85bd3ef4b 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -16,9 +16,9 @@ Your guide to implementing FinOps in the Microsoft Cloud. FinOps is an expansive area with branches that extend out into many cloud management and governance activities. Cost especially is a part of many cloud and business initiatives, like security, resiliency, and adopting cloud-native solutions like AI. And to streamline cloud adoption in a way that prioritizes business value, you need the right guidance to help you make the right data-driven decisions. The Implementing FinOps guide is a collection of resources that help you facilitate your FinOps goals.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, the Implementing FinOps guide updated the FinOps overview video and error handling documentation. + In August, the Implementing FinOps guide added a FinOps toolkit ecosystem page and aligned capability names and links to current FinOps Framework terminology.

See all changes

diff --git a/docs/hubs.md b/docs/hubs.md index c3ff69557..dae52d916 100644 --- a/docs/hubs.md +++ b/docs/hubs.md @@ -20,9 +20,9 @@ Open, extensible, and scalable cost governance for the enterprise. FinOps hubs are a reliable, trustworthy platform for cost analytics, insights, and optimization – virtual command centers for leaders throughout the organization to report on, monitor, and optimize cost based on their organizational needs.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, FinOps hubs added recommendations ingestion from Azure Advisor and custom ARG queries, a Copilot Studio agent template, simplified the deployment UI, and fixed deployment and ETL pipeline issues. + In August, FinOps hubs added VNet and private network modes with optional NAT Gateway support, a guide to run FinOps hubs using a local Kusto emulator, and fixed several KQL join and cost recompute issues.

See all changes

diff --git a/docs/open-data.md b/docs/open-data.md index ed191680b..97702ca4d 100644 --- a/docs/open-data.md +++ b/docs/open-data.md @@ -20,9 +20,9 @@ Leverage open data to normalize and enhance your FinOps reporting. FinOps toolkit open data is used to transform Cost Management actual and amortized data into FOCUS. Use the same mappings to clean your FinOps datasets.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, open data added a new commitment discount eligibility dataset with pre-computed reservation and savings plan eligibility per meter, sourced from the Azure Retail Prices API. + In August, open data added a new Instance size flexibility dataset sourced from the Azure Reservations Catalogs API, replacing the deprecated ISF ratio files, and fixed the commitment discount eligibility dataset refresh to be reproducible and complete.

See all changes

diff --git a/docs/optimization-engine.md b/docs/optimization-engine.md index 878b982d0..ae9b90fa9 100644 --- a/docs/optimization-engine.md +++ b/docs/optimization-engine.md @@ -20,9 +20,9 @@ Optimize your Azure environment. The Azure Optimization Engine (AOE) is an extensible solution designed to generate optimization recommendations for your Azure environment. See it like a fully customizable Azure Advisor.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, Azure Optimization Engine upgraded the EA/MCA pricesheet API version (the previous version is deprecated June 1, 2026) and improved retail prices export resilience with retry logic, streamed CSV writes, and progress logging. + In August, Azure Optimization Engine migrated Log Analytics ingestion to a Data Collection Rule-based solution, switched to the new Instance size flexibility open dataset, and removed a deprecated Azure Classic administrators API call.

diff --git a/docs/power-bi.md b/docs/power-bi.md index b64c6fd4a..55f4a9e60 100644 --- a/docs/power-bi.md +++ b/docs/power-bi.md @@ -20,9 +20,9 @@ Accelerate your analytics efforts with simple, targeted reports. Summarize and b FinOps toolkit Power BI reports provide a great starting point for FinOps reporting. Customize and augment reports with your own data to facilitate organizational requirements.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, Power BI reports fixed storage report refresh errors caused by unrecognized Term values like P10Y in pricesheet exports. + In August, Power BI reports switched to the new Instance size flexibility open dataset, fixed storage report refresh errors from ISO 8601 duration values, and paginated Azure Resource Graph queries to avoid payload size errors.

See all changes

diff --git a/docs/powershell.md b/docs/powershell.md index 26cd4b910..2db1bcd74 100644 --- a/docs/powershell.md +++ b/docs/powershell.md @@ -20,9 +20,9 @@ Automate and scale your FinOps efforts with PowerShell commands that streamline The FinOps toolkit PowerShell module helps you automate and scale common Cost Management and FinOps toolkit management operations and work with FinOps toolkit open data.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, the PowerShell module added WhatIf support for resource provider registration in New-FinOpsCostExport and fixed inverted verbose logging in Start-FinOpsCostExport. + In August, the PowerShell module added Initialize-FinOpsHubLocal for setting up a local FinOps hub with one command, updated test compatibility with Pester 6, and fixed Get-FinOpsCostExport -RunHistory to return the complete run history.

See all changes

diff --git a/docs/workbooks.md b/docs/workbooks.md index 7559f8d03..3210c5d09 100644 --- a/docs/workbooks.md +++ b/docs/workbooks.md @@ -20,9 +20,9 @@ Engineering hub to maximize cloud ROI through FinOps. FinOps workbooks are Azure workbooks that provide a series of tools to help engineers perform targeted FinOps tasks, modeled after the Well-Architected Framework guidance.
-

What's new in April 2026v14

+

What's new in August 2026v15

- In April, FinOps workbooks fixed the broken feedback link in the Optimization workbook, excluded dev/test subscriptions from Azure Hybrid Benefit reports, and fixed AHB reports to include Windows VMs from all publishers. + In August, FinOps workbooks fixed savings plan and Azure Hybrid Benefit queries that were silently dropping or missing recommendations due to implicit join behavior.

See all changes

From 843a102027247f9f994a39010622251a8fdebff2 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 26 Aug 2026 15:13:05 -0700 Subject: [PATCH 2/9] docs: add DeploymentScriptACIProvisioningTimeout mitigation Documents the known retry and SecurityControl=Ignore mitigations for deployment scripts stuck provisioning their Azure Container Instance, per the diagnosis worked out on #2241. Co-Authored-By: Claude Sonnet 5 --- docs-mslearn/toolkit/help/errors.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/docs-mslearn/toolkit/help/errors.md b/docs-mslearn/toolkit/help/errors.md index f9adc25eb..00311561c 100644 --- a/docs-mslearn/toolkit/help/errors.md +++ b/docs-mslearn/toolkit/help/errors.md @@ -3,7 +3,7 @@ title: Troubleshoot common FinOps toolkit errors description: This article describes common FinOps toolkit errors and provides solutions to help you resolve issues you might encounter. author: flanakin ms.author: micflan -ms.date: 08/13/2026 +ms.date: 08/14/2026 ms.topic: troubleshooting ms.service: finops ms.subservice: finops-toolkit @@ -376,6 +376,26 @@ We are following up with the Azure Data Explorer team to identify the correct re
+## DeploymentScriptACIProvisioningTimeout + +Severity: Major + +FinOps hub deployments use `Microsoft.Resources/deploymentScripts` resources to run PowerShell setup scripts. Each deployment script provisions a temporary Azure Container Instance (ACI) to execute its script. If that container instance doesn't start in time, the deployment script — and the overall deployment — fails with `DeploymentScriptACIProvisioningTimeout`. + +This error isn't caused by the script itself; it means the underlying ACI never finished provisioning. We've seen two causes: + +- **Transient ACI capacity or scheduling delay.** The container instance service is momentarily unable to place the container. This usually resolves on its own. +- **Restrictive tenant security policies (for example, Microsoft SFI) blocking the deployment script's use of a storage account key.** The container gets stuck in a `Waiting to run` or `Creating` state and never progresses. + +**Mitigation**: + +1. **Retry the deployment.** Most instances of this error are transient — simply redeploying resolves it. +2. **If it keeps failing, set the `SecurityControl` tag to `Ignore` on the target resource group before deploying.** Some tenant security policies disable the shared storage account key that deployment scripts rely on; this tag bypasses that restriction for the deployment. + +Report unresolved issues at . + +
+ ## ExportDataNotFound Severity: Critical From 44293c23043b1fe7eda3388fa7d63967a84ac0f9 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 2 Sep 2026 09:00:15 -0700 Subject: [PATCH 3/9] chore: bump version to 15.0.0 Co-Authored-By: Claude Opus 5 --- .claude-plugin/marketplace.json | 2 +- .github/plugin/marketplace.json | 6 +++--- docs/_includes/ftkver.txt | 2 +- package-lock.json | 4 ++-- package.json | 2 +- src/optimization-engine/ftkver.txt | 2 +- src/powershell/Private/Get-VersionNumber.ps1 | 2 +- .../agent-plugin/.claude-plugin/plugin.json | 15 ++++++++++++--- src/templates/agent-plugin/plugin.json | 15 ++++++++++++--- src/templates/finops-alerts/modules/ftkver.txt | 2 +- src/templates/finops-hub/modules/fx/ftkver.txt | 2 +- src/templates/finops-workbooks/ftkver.txt | 2 +- src/workbooks/.scaffold/ftkver.txt | 2 +- 13 files changed, 38 insertions(+), 20 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 4f8d4ba2a..4ad827dc5 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -8,7 +8,7 @@ "plugins": [ { "name": "microsoft-finops-toolkit", - "version": "15.0.0", + "version": "15.0", "source": "./plugins/microsoft-finops-toolkit", "description": "Microsoft FinOps toolkit plugin for AI-powered cloud financial management.", "category": "finops", diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index 49876e25b..46096669a 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -5,12 +5,12 @@ }, "metadata": { "description": "Microsoft FinOps toolkit plugin for AI-powered cloud financial management.", - "version": "15.0.0" + "version": "15.0" }, "plugins": [ { "name": "microsoft-finops-toolkit", - "version": "15.0.0", + "version": "15.0", "source": "./plugins/microsoft-finops-toolkit", "description": "Microsoft FinOps toolkit plugin for AI-powered cloud financial management.", "category": "finops", @@ -27,4 +27,4 @@ "homepage": "https://learn.microsoft.com" } ] -} +} \ No newline at end of file diff --git a/docs/_includes/ftkver.txt b/docs/_includes/ftkver.txt index e6e484c9f..3d3be3c32 100644 --- a/docs/_includes/ftkver.txt +++ b/docs/_includes/ftkver.txt @@ -1 +1 @@ -15.0-dev \ No newline at end of file +15.0 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index d1993e489..2b84a1d70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ftk", - "version": "15.0.0-dev.0", + "version": "15.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "ftk", - "version": "15.0.0-dev.0", + "version": "15.0.0", "license": "MIT", "devDependencies": { "all-contributors-cli": "^6.26.1" diff --git a/package.json b/package.json index 898ab1baa..6c0a6b93b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ftk", - "version": "15.0.0-dev.0", + "version": "15.0.0", "description": "Starter kits, scripts, and advanced solutions to accelerate your FinOps journey in the Microsoft Cloud.", "main": "index.js", "directories": { diff --git a/src/optimization-engine/ftkver.txt b/src/optimization-engine/ftkver.txt index e6e484c9f..3d3be3c32 100644 --- a/src/optimization-engine/ftkver.txt +++ b/src/optimization-engine/ftkver.txt @@ -1 +1 @@ -15.0-dev \ No newline at end of file +15.0 \ No newline at end of file diff --git a/src/powershell/Private/Get-VersionNumber.ps1 b/src/powershell/Private/Get-VersionNumber.ps1 index 097964a44..c14edf29b 100644 --- a/src/powershell/Private/Get-VersionNumber.ps1 +++ b/src/powershell/Private/Get-VersionNumber.ps1 @@ -4,5 +4,5 @@ function Get-VersionNumber { param() - return '15.0-dev' + return '15.0' } diff --git a/src/templates/agent-plugin/.claude-plugin/plugin.json b/src/templates/agent-plugin/.claude-plugin/plugin.json index 109c206d7..09d2a04d0 100644 --- a/src/templates/agent-plugin/.claude-plugin/plugin.json +++ b/src/templates/agent-plugin/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "microsoft-finops-toolkit", - "version": "15.0.0", + "version": "15.0", "description": "Microsoft FinOps toolkit plugin for AI-powered cloud financial management.", "author": { "name": "FinOps Toolkit Team", @@ -9,10 +9,19 @@ "homepage": "https://aka.ms/finops/toolkit", "repository": "https://github.com/microsoft/finops-toolkit", "license": "MIT", - "keywords": ["finops", "cost-management", "reservations", "savings-plans", "cloud-optimization", "commitments", "credits", "macc"], + "keywords": [ + "finops", + "cost-management", + "reservations", + "savings-plans", + "cloud-optimization", + "commitments", + "credits", + "macc" + ], "commands": "./commands/", "skills": [ "./skills/" ], "outputStyles": "./output-styles/" -} +} \ No newline at end of file diff --git a/src/templates/agent-plugin/plugin.json b/src/templates/agent-plugin/plugin.json index bc7d4da20..946292328 100644 --- a/src/templates/agent-plugin/plugin.json +++ b/src/templates/agent-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "microsoft-finops-toolkit", - "version": "15.0.0", + "version": "15.0", "description": "Microsoft FinOps toolkit plugin for AI-powered cloud financial management.", "author": { "name": "FinOps Toolkit Team", @@ -9,11 +9,20 @@ "homepage": "https://aka.ms/finops/toolkit", "repository": "https://github.com/microsoft/finops-toolkit", "license": "MIT", - "keywords": ["finops", "cost-management", "reservations", "savings-plans", "cloud-optimization", "commitments", "credits", "macc"], + "keywords": [ + "finops", + "cost-management", + "reservations", + "savings-plans", + "cloud-optimization", + "commitments", + "credits", + "macc" + ], "commands": "./commands/", "agents": "./agents/", "skills": [ "skills/" ], "mcpServers": ".mcp.json" -} +} \ No newline at end of file diff --git a/src/templates/finops-alerts/modules/ftkver.txt b/src/templates/finops-alerts/modules/ftkver.txt index e6e484c9f..3d3be3c32 100644 --- a/src/templates/finops-alerts/modules/ftkver.txt +++ b/src/templates/finops-alerts/modules/ftkver.txt @@ -1 +1 @@ -15.0-dev \ No newline at end of file +15.0 \ No newline at end of file diff --git a/src/templates/finops-hub/modules/fx/ftkver.txt b/src/templates/finops-hub/modules/fx/ftkver.txt index e6e484c9f..3d3be3c32 100644 --- a/src/templates/finops-hub/modules/fx/ftkver.txt +++ b/src/templates/finops-hub/modules/fx/ftkver.txt @@ -1 +1 @@ -15.0-dev \ No newline at end of file +15.0 \ No newline at end of file diff --git a/src/templates/finops-workbooks/ftkver.txt b/src/templates/finops-workbooks/ftkver.txt index e6e484c9f..3d3be3c32 100644 --- a/src/templates/finops-workbooks/ftkver.txt +++ b/src/templates/finops-workbooks/ftkver.txt @@ -1 +1 @@ -15.0-dev \ No newline at end of file +15.0 \ No newline at end of file diff --git a/src/workbooks/.scaffold/ftkver.txt b/src/workbooks/.scaffold/ftkver.txt index e6e484c9f..3d3be3c32 100644 --- a/src/workbooks/.scaffold/ftkver.txt +++ b/src/workbooks/.scaffold/ftkver.txt @@ -1 +1 @@ -15.0-dev \ No newline at end of file +15.0 \ No newline at end of file From 327eafb927a5ee293518ce0dfb34bb5c5cd76e98 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Mon, 7 Sep 2026 09:20:46 -0700 Subject: [PATCH 4/9] docs: finalize v15 changelog, what's new blurbs, and hubs docs - Set release month to September 2026 across changelog and what's new blurbs - Link the agent plugins changelog section to its docs page - Add missing issue links (#2176, #2225) and fix past-tense verb usage - Trim verbose and implementation-detail changelog entries - Fold in dev entries merged after the prep branch was cut (#2301) - Document the v15 commitment discount eligibility column swap in the upgrade guide, data model, and data processing docs Co-Authored-By: Claude Opus 5 --- docs-mslearn/toolkit/changelog.md | 22 +- docs-mslearn/toolkit/hubs/data-model.md | 450 +++++++++---------- docs-mslearn/toolkit/hubs/data-processing.md | 9 +- docs-mslearn/toolkit/hubs/upgrade.md | 4 +- docs/README.md | 4 +- docs/agent-plugin.md | 2 +- docs/alerts.md | 4 +- docs/guide.md | 4 +- docs/hubs.md | 4 +- docs/open-data.md | 4 +- docs/optimization-engine.md | 4 +- docs/power-bi.md | 4 +- docs/powershell.md | 4 +- docs/workbooks.md | 4 +- 14 files changed, 265 insertions(+), 258 deletions(-) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 5ef117a7e..1eb3a3fb1 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -31,22 +31,18 @@ The following section lists features and enhancements that are currently in deve ## v15 -_Released August 2026_ +_Released September 2026_ ### [Implementing FinOps guide](../implementing-finops-guide.md) v15 - **Added** - - Added a [FinOps toolkit ecosystem page](https://microsoft.github.io/finops-toolkit/ecosystem) listing independent tools and organizations that build on or support the FinOps toolkit. - - **Changed** - - Aligned FinOps Framework capability names and links across guidance to current FinOps Framework terminology, including Usage optimization and Governance, policy, and risk ([#2170](https://github.com/microsoft/finops-toolkit/pull/2170)). - - **Fixed** - Corrected stale and incorrect descriptions for `BilledCost`, `EffectiveCost`, `BillingCurrency`, `BillingProfileId`, `BillingProfileName`, `CommitmentDiscountQuantity`, `ListUnitPrice`, `PricingQuantity`, `PricingUnitDescription`, and `TotalSavingsRunningTotal` in the [data dictionary](help/data-dictionary.md) to align with FOCUS 1.2. -### FinOps toolkit agent plugins v15 +### [FinOps toolkit agent plugins](agent-plugin/finops-toolkit-agent-plugin-overview.md) v15 - **Added** - Added a shared FinOps Toolkit plugin for Claude Code and GitHub Copilot CLI with 5 agents (CFO, FinOps practitioner, database query, hubs agent, and Azure capacity manager), 4 commands (`/ftk/hubs-connect`, `/ftk/hubs-health-check`, `/ftk/mom-report`, and `/ftk/ytd-report`), a FinOps hubs KQL skill, and a read-only Azure MCP server. @@ -63,13 +59,12 @@ _Released August 2026_ - Clarified that the FinOps toolkit exclusively manages the FinOps hub virtual network and documented customer-managed private endpoints as the preferred private-access topology, with virtual network peering as a secondary option ([#2156](https://github.com/microsoft/finops-toolkit/issues/2156)). - Replaced redundant `tolower()` comparisons in hub KQL with case-insensitive operators (`has`, `=~`, `!~`) so the engine can use the term index instead of scanning every row ([#2213](https://github.com/microsoft/finops-toolkit/issues/2213)). - Replaced whole-term `contains` matches with `has` across hub KQL and the query catalog (resource ID paths, licensing phrases, SKU description terms) and added a per-row operator-equivalence regression harness with unit test coverage ([#2220](https://github.com/microsoft/finops-toolkit/pull/2220)). - - Switched dimension enrichment in the v1_0/v1_2 ingestion transforms (`PricingUnits`, `Regions`, `ResourceTypes`, `Services`) from `join` to the broadcast-optimized `lookup` operator and deduplicated the `Services` mapping per resource type to prevent cost row fan-out. + - Switched dimension enrichment in the v1_0/v1_2 ingestion transforms (`PricingUnits`, `Regions`, `ResourceTypes`, `Services`) from `join` to the broadcast-optimized `lookup` operator and deduplicated the `Services` mapping per resource type to prevent cost row fan-out ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - **Fixed** - Fixed Data Factory ingestion memory pressure during emptiness filtering. - - Replaced `isnotempty(strcat(x_SkuMeterId, x_SkuOfferId))` with separate `isnotempty()` checks in FinOps hub ingestion scripts to avoid temporary string allocation. - - Hardened the reservation price backfill to select the highest on-demand price (`max()` instead of `min()`) when duplicate price rows collapse under a single reservation price lookup key, preventing understated commitment discount savings. + - Hardened the reservation price backfill to select the highest on-demand price (`max()` instead of `min()`) when duplicate price rows collapse under a single reservation price lookup key, preventing understated commitment discount savings ([#2176](https://github.com/microsoft/finops-toolkit/issues/2176)). - Fixed the `ContractedCost` recompute guard to compare with a null-safe tolerance instead of exact float equality, eliminating millions of no-op rewrites that polluted the `x_SourceValues` audit trail while preserving the null-cost backfill and no longer overwriting an existing cost when the unit price is missing ([#2216](https://github.com/microsoft/finops-toolkit/issues/2216)). - - Fixed the SQL VMs without Azure Hybrid Benefit recommendation query to join on the SQL VM `virtualMachineResourceId` instead of a case-sensitive VM name match that skipped VMs with uppercase names and dropped duplicate names, and made all Azure Resource Graph join kinds explicit so no query relies on the `innerunique` default. + - Fixed the SQL VMs without Azure Hybrid Benefit recommendation query to join on the SQL VM `virtualMachineResourceId` instead of a case-sensitive VM name match that skipped VMs with uppercase names and dropped duplicate names, and made all Azure Resource Graph join kinds explicit so no query relies on the `innerunique` default ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). - Fixed managed exports failing with an `Unauthorized` error because the Role Based Access Control Administrator role was never assigned to the Data Factory identity. Roles requested by a hub app are now assigned on the publisher storage account even when the app doesn't create the storage account itself ([#2253](https://github.com/microsoft/finops-toolkit/issues/2253)). - Fixed private-network deployments that Azure Policy blocked when `defaultOutboundAccess` was omitted. Private mode subnets now set it to `false`, while an Azure Files private endpoint supports deployment-script storage and the NAT Gateway provides required container egress ([#2258](https://github.com/microsoft/finops-toolkit/issues/2258), [#2259](https://github.com/microsoft/finops-toolkit/pull/2259)). - Fixed the v1_0 and v1_2 price transforms setting `x_CommitmentDiscountSpendEligibility` from reservation meters and `x_CommitmentDiscountUsageEligibility` from savings plan meters, the opposite of the FOCUS `CommitmentDiscountCategory` value the same transform assigns. The spend column now reports savings plan pricing and the usage column reports reservation pricing. Prices ingested after upgrading carry the corrected values; rows ingested earlier keep the old values until they are reingested ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)). @@ -81,7 +76,9 @@ _Released August 2026_ - Switched the InstanceSizeFlexibility table in the storage and KQL shared datasets from the retired `ccmstorageprod` AutofitComboMeterData.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file, joined to reservation recommendations on the unique ARM SKU name ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - Fixed Power BI storage report refresh errors caused by ISO 8601 duration `x_SkuTerm` values (like `P3Y`) and empty strings in cost exports ([#2174](https://github.com/microsoft/finops-toolkit/issues/2174)). - - Paginate Azure Resource Graph queries by subscription to mitigate [payload size limit](help/errors.md#response-payload-size-is-and-has-exceeded-the-limit) errors in the [Governance](power-bi/governance.md) and [Workload optimization](power-bi/workload-optimization.md) reports ([#1768](https://github.com/microsoft/finops-toolkit/issues/1768)). Queries still surface a payload size error (rather than silently returning truncated results) if a single batch of subscriptions exceeds the limit; see [Reduce the batch size](help/errors.md#option-1-reduce-the-batch-size) for the mitigation. As part of this change, the `AdvisorRecommendations` and `AdvisorReservationRecommendations` tables now return complete (non-truncated) results per batch, matching every other batched table; previously these two tables silently dropped rows beyond the payload limit instead of erroring. + - Paginated Azure Resource Graph queries by subscription to mitigate [payload size limit](help/errors.md#response-payload-size-is-and-has-exceeded-the-limit) errors in the [Governance](power-bi/governance.md) and [Workload optimization](power-bi/workload-optimization.md) reports ([#1768](https://github.com/microsoft/finops-toolkit/issues/1768)). + - The `AdvisorRecommendations` and `AdvisorReservationRecommendations` tables now return complete results per batch instead of silently dropping rows beyond the payload limit. + - A batch that still exceeds the limit surfaces an error rather than truncating; see [Reduce the batch size](help/errors.md#option-1-reduce-the-batch-size). ### [FinOps workbooks](workbooks/finops-workbooks-overview.md) v15 @@ -95,7 +92,7 @@ _Released August 2026_ ### [FinOps alerts](alerts/finops-alerts-overview.md) v15 - **Fixed** - - Made the idle application gateway and idle public IP query join kinds explicit so they no longer rely on the `innerunique` default. + - Made the idle application gateway and idle public IP query join kinds explicit so they no longer rely on the `innerunique` default ([#2225](https://github.com/microsoft/finops-toolkit/pull/2225)). ### [Optimization engine](optimization-engine/overview.md) v15 @@ -106,6 +103,7 @@ _Released August 2026_ - Switched the reservations and benefits workbooks from the retired `ccmstorageprod` isfratioblob.csv to the FinOps toolkit [Instance size flexibility](open-data.md#instance-size-flexibility) open data file ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - Removed call to Azure Classic administrators endpoint (deprecated on May 1, 2026) from Azure RBAC assignments exports ([#2142](https://github.com/microsoft/finops-toolkit/issues/2142)). + - Fixed a regression in the `AzureOptimizationConsumptionV1_CL` schema that was breaking the Reservations Usage workbook ([#2301](https://github.com/microsoft/finops-toolkit/issues/2301)). ### [PowerShell module](powershell/powershell-commands.md) v15 diff --git a/docs-mslearn/toolkit/hubs/data-model.md b/docs-mslearn/toolkit/hubs/data-model.md index aeb54180d..e835f887b 100644 --- a/docs-mslearn/toolkit/hubs/data-model.md +++ b/docs-mslearn/toolkit/hubs/data-model.md @@ -3,7 +3,7 @@ title: FinOps hubs data model description: Learn about the tables and functions available in FinOps hubs to build your own queries, reports, and dashboards. author: flanakin ms.author: micflan -ms.date: 08/14/2026 +ms.date: 09/07/2026 ms.topic: reference ms.service: finops ms.subservice: finops-toolkit @@ -227,159 +227,159 @@ FinOps hubs does not support directly pulling data from other clouds, but if dat Columns in the **Costs** managed dataset include: -| Column | Type | Notes | -| ---------------------------------------- | --------- | ------------------------------------------------------ | -| AvailabilityZone | String | | -| BilledCost | Real | | -| BillingAccountId | String | | -| BillingAccountName | String | | -| BillingAccountType | String | | -| BillingCurrency | String | | -| BillingPeriodEnd | Date/time | | -| BillingPeriodStart | Date/time | | -| CapacityReservationId | String | New in FOCUS 1.2. | -| CapacityReservationStatus | String | New in FOCUS 1.2. | -| ChargeCategory | String | | -| ChargeClass | String | | -| ChargeDescription | String | | -| ChargeFrequency | String | | -| ChargePeriodEnd | Date/time | | -| ChargePeriodStart | Date/time | | -| CommitmentDiscountCategory | String | | -| CommitmentDiscountId | String | | -| CommitmentDiscountName | String | | -| CommitmentDiscountQuantity | Real | New in FOCUS 1.2. | -| CommitmentDiscountStatus | String | | -| CommitmentDiscountType | String | | -| CommitmentDiscountUnit | String | New in FOCUS 1.2. | -| ConsumedQuantity | Real | | -| ConsumedUnit | String | | -| ContractedCost | Real | | -| ContractedUnitPrice | Real | | -| EffectiveCost | Real | | -| InvoiceId | String | New in FOCUS 1.2. Renamed from x_InvoiceId. | -| InvoiceIssuerName | String | | -| ListCost | Real | | -| ListUnitPrice | Real | | -| PricingCategory | String | | -| PricingCurrency | String | New in FOCUS 1.2. Renamed from x_PricingCurrency. | -| PricingQuantity | Real | | -| PricingUnit | String | | -| ProviderName | String | | -| PublisherName | String | | -| RegionId | String | | -| RegionName | String | | -| ResourceId | String | | -| ResourceName | String | | -| ResourceType | String | | -| ServiceCategory | String | | -| ServiceName | String | | -| ServiceSubcategory | String | New in FOCUS 1.2. | -| SkuId | String | | -| SkuMeter | String | New in FOCUS 1.2. Renamed from x_SkuMeterName. | -| SkuPriceDetails | Dynamic | New in FOCUS 1.2. Transformed version of x_SkuDetails. | -| SkuPriceId | String | | -| SubAccountId | String | | -| SubAccountName | String | | -| SubAccountType | String | | -| Tags | Dynamic | | -| x_AccountId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_AccountName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_AccountOwnerId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_AmortizationClass | String | Source: Microsoft 1.2-preview+. | -| x_BilledCostInUsd | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_BilledUnitPrice | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_BillingAccountAgreement | String | Source: Hubs add-on. | -| x_BillingAccountId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_BillingAccountName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_BillingExchangeRate | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_BillingExchangeRateDate | Date/time | Source: Microsoft 1.0-preview(v1)+. | -| x_BillingItemCode | String | Source: Alibaba 1.0. | -| x_BillingItemName | String | Source: Alibaba 1.0. | -| x_BillingProfileId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_BillingProfileName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ChargeId | String | Source: Microsoft 1.0-preview(v1) only. | -| x_CommitmentDiscountNormalizedRatio | Real | Source: Microsoft 1.2-preview+. | -| x_CommitmentDiscountPercent | String | Source: Hubs add-on. | -| x_CommitmentDiscountSavings | String | Source: Hubs add-on. | -| x_CommitmentDiscountSpendEligibility | String | Source: Hubs add-on. | -| x_CommitmentDiscountUsageEligibility | String | Source: Hubs add-on. | -| x_CommitmentDiscountUtilizationAmount | String | Source: Hubs add-on. | -| x_CommitmentDiscountUtilizationPotential | String | Source: Hubs add-on. | -| x_CommodityCode | String | Source: Alibaba 1.0. | -| x_CommodityName | String | Source: Alibaba 1.0. | -| x_ConsumedCoreHours | Real | Source: Hubs add-on. | -| x_ContractedCostInUsd | Real | Source: Microsoft 1.0+. | -| x_CostAllocationRuleName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_CostCategories | Dynamic | Source: AWS 1.0 (JSON). | -| x_CostCenter | String | Source: Microsoft 1.0-preview(v1)+. | -| x_CostType | String | Source: GCP Jan 2024. | -| x_Credits | Dynamic | Source: GCP Jan 2024. | -| x_CurrencyConversionRate | Real | Source: GCP Jun 2024. | -| x_CustomerId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_CustomerName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_Discount | Dynamic | Source: AWS 1.0 (JSON). | -| x_EffectiveCostInUsd | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_EffectiveUnitPrice | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_ExportTime | Date/time | Source: GCP Jan 2024. | -| x_IngestionTime | Date/time | Source: Hubs add-on. | -| x_InstanceID | String | Source: Alibaba 1.0. | -| x_InvoiceIssuerId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_InvoiceSectionId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_InvoiceSectionName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ListCostInUsd | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_Location | String | Source: GCP Jan 2024. | -| x_NegotiatedDiscountSavings | String | Source: Hubs add-on. | -| x_NegotiatedDiscountPercent | String | Source: Hubs add-on. | -| x_Operation | String | Source: AWS 1.0. | -| x_PartnerCreditApplied | String | Source: Microsoft 1.0-preview(v1)+. | -| x_PartnerCreditRate | String | Source: Microsoft 1.0-preview(v1)+. | -| x_PricingBlockSize | Real | Source: Microsoft 1.0-preview(v1)+. | -| x_PricingSubcategory | String | Source: Microsoft 1.0-preview(v1)+. | -| x_PricingUnitDescription | String | Source: Microsoft 1.0-preview(v1)+. | -| x_Project | String | Source: GCP Jan 2024. | -| x_PublisherCategory | String | Source: Microsoft 1.0-preview(v1)+. | -| x_PublisherId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ResellerId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ResellerName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ResourceGroupName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ResourceType | String | Source: Microsoft 1.0-preview(v1)+. | -| x_ServiceCode | String | Source: AWS 1.0. | -| x_ServiceId | String | Source: GCP Jan 2024. | -| x_ServiceModel | String | Source: Microsoft 1.2-preview+. | -| x_ServicePeriodEnd | Date/time | Source: Microsoft 1.0-preview(v1)+. | -| x_ServicePeriodStart | Date/time | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuCoreCount | String | Source: Hubs add-on. | -| x_SkuDescription | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuDetails | Dynamic | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuInstanceType | String | Source: Hubs add-on. | -| x_SkuIsCreditEligible | Bool | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuLicenseQuantity | String | Source: Hubs add-on. | -| x_SkuLicenseStatus | String | Source: Hubs add-on. | -| x_SkuLicenseType | String | Source: Hubs add-on. | -| x_SkuLicenseUnit | String | Source: Hubs add-on. | -| x_SkuMeterCategory | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuMeterId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuMeterSubcategory | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuOfferId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuOperatingSystem | String | Source: Hubs add-on. | -| x_SkuOrderId | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuOrderName | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuPartNumber | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuPlanName | String | Source: Microsoft 1.2-preview+. | -| x_SkuRegion | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuServiceFamily | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuTerm | Int | Source: Microsoft 1.0-preview(v1)+. | -| x_SkuTier | String | Source: Microsoft 1.0-preview(v1)+. | -| x_SourceChanges | String | Source: Hubs add-on. | -| x_SourceName | String | Source: Hubs add-on. | -| x_SourceProvider | String | Source: Hubs add-on. | -| x_SourceType | String | Source: Hubs add-on. | -| x_SourceValues | Dynamic | Source: Hubs add-on. | -| x_SourceVersion | String | Source: Hubs add-on. | -| x_TotalDiscountPercent | String | Source: Hubs add-on. | -| x_TotalSavings | String | Source: Hubs add-on. | -| x_UsageType | String | Source: AWS 1.0. | +| Column | Type | Notes | +| ---------------------------------------- | --------- | ------------------------------------------------------------ | +| AvailabilityZone | String | | +| BilledCost | Real | | +| BillingAccountId | String | | +| BillingAccountName | String | | +| BillingAccountType | String | | +| BillingCurrency | String | | +| BillingPeriodEnd | Date/time | | +| BillingPeriodStart | Date/time | | +| CapacityReservationId | String | New in FOCUS 1.2. | +| CapacityReservationStatus | String | New in FOCUS 1.2. | +| ChargeCategory | String | | +| ChargeClass | String | | +| ChargeDescription | String | | +| ChargeFrequency | String | | +| ChargePeriodEnd | Date/time | | +| ChargePeriodStart | Date/time | | +| CommitmentDiscountCategory | String | | +| CommitmentDiscountId | String | | +| CommitmentDiscountName | String | | +| CommitmentDiscountQuantity | Real | New in FOCUS 1.2. | +| CommitmentDiscountStatus | String | | +| CommitmentDiscountType | String | | +| CommitmentDiscountUnit | String | New in FOCUS 1.2. | +| ConsumedQuantity | Real | | +| ConsumedUnit | String | | +| ContractedCost | Real | | +| ContractedUnitPrice | Real | | +| EffectiveCost | Real | | +| InvoiceId | String | New in FOCUS 1.2. Renamed from x_InvoiceId. | +| InvoiceIssuerName | String | | +| ListCost | Real | | +| ListUnitPrice | Real | | +| PricingCategory | String | | +| PricingCurrency | String | New in FOCUS 1.2. Renamed from x_PricingCurrency. | +| PricingQuantity | Real | | +| PricingUnit | String | | +| ProviderName | String | | +| PublisherName | String | | +| RegionId | String | | +| RegionName | String | | +| ResourceId | String | | +| ResourceName | String | | +| ResourceType | String | | +| ServiceCategory | String | | +| ServiceName | String | | +| ServiceSubcategory | String | New in FOCUS 1.2. | +| SkuId | String | | +| SkuMeter | String | New in FOCUS 1.2. Renamed from x_SkuMeterName. | +| SkuPriceDetails | Dynamic | New in FOCUS 1.2. Transformed version of x_SkuDetails. | +| SkuPriceId | String | | +| SubAccountId | String | | +| SubAccountName | String | | +| SubAccountType | String | | +| Tags | Dynamic | | +| x_AccountId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_AccountName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_AccountOwnerId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_AmortizationClass | String | Source: Microsoft 1.2-preview+. | +| x_BilledCostInUsd | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_BilledUnitPrice | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_BillingAccountAgreement | String | Source: Hubs add-on. | +| x_BillingAccountId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_BillingAccountName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_BillingExchangeRate | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_BillingExchangeRateDate | Date/time | Source: Microsoft 1.0-preview(v1)+. | +| x_BillingItemCode | String | Source: Alibaba 1.0. | +| x_BillingItemName | String | Source: Alibaba 1.0. | +| x_BillingProfileId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_BillingProfileName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ChargeId | String | Source: Microsoft 1.0-preview(v1) only. | +| x_CommitmentDiscountNormalizedRatio | Real | Source: Microsoft 1.2-preview+. | +| x_CommitmentDiscountPercent | String | Source: Hubs add-on. | +| x_CommitmentDiscountSavings | String | Source: Hubs add-on. | +| x_CommitmentDiscountSpendEligibility | String | Reports savings plan pricing as of v15. Source: Hubs add-on. | +| x_CommitmentDiscountUsageEligibility | String | Reports reservation pricing as of v15. Source: Hubs add-on. | +| x_CommitmentDiscountUtilizationAmount | String | Source: Hubs add-on. | +| x_CommitmentDiscountUtilizationPotential | String | Source: Hubs add-on. | +| x_CommodityCode | String | Source: Alibaba 1.0. | +| x_CommodityName | String | Source: Alibaba 1.0. | +| x_ConsumedCoreHours | Real | Source: Hubs add-on. | +| x_ContractedCostInUsd | Real | Source: Microsoft 1.0+. | +| x_CostAllocationRuleName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_CostCategories | Dynamic | Source: AWS 1.0 (JSON). | +| x_CostCenter | String | Source: Microsoft 1.0-preview(v1)+. | +| x_CostType | String | Source: GCP Jan 2024. | +| x_Credits | Dynamic | Source: GCP Jan 2024. | +| x_CurrencyConversionRate | Real | Source: GCP Jun 2024. | +| x_CustomerId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_CustomerName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_Discount | Dynamic | Source: AWS 1.0 (JSON). | +| x_EffectiveCostInUsd | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_EffectiveUnitPrice | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_ExportTime | Date/time | Source: GCP Jan 2024. | +| x_IngestionTime | Date/time | Source: Hubs add-on. | +| x_InstanceID | String | Source: Alibaba 1.0. | +| x_InvoiceIssuerId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_InvoiceSectionId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_InvoiceSectionName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ListCostInUsd | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_Location | String | Source: GCP Jan 2024. | +| x_NegotiatedDiscountSavings | String | Source: Hubs add-on. | +| x_NegotiatedDiscountPercent | String | Source: Hubs add-on. | +| x_Operation | String | Source: AWS 1.0. | +| x_PartnerCreditApplied | String | Source: Microsoft 1.0-preview(v1)+. | +| x_PartnerCreditRate | String | Source: Microsoft 1.0-preview(v1)+. | +| x_PricingBlockSize | Real | Source: Microsoft 1.0-preview(v1)+. | +| x_PricingSubcategory | String | Source: Microsoft 1.0-preview(v1)+. | +| x_PricingUnitDescription | String | Source: Microsoft 1.0-preview(v1)+. | +| x_Project | String | Source: GCP Jan 2024. | +| x_PublisherCategory | String | Source: Microsoft 1.0-preview(v1)+. | +| x_PublisherId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ResellerId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ResellerName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ResourceGroupName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ResourceType | String | Source: Microsoft 1.0-preview(v1)+. | +| x_ServiceCode | String | Source: AWS 1.0. | +| x_ServiceId | String | Source: GCP Jan 2024. | +| x_ServiceModel | String | Source: Microsoft 1.2-preview+. | +| x_ServicePeriodEnd | Date/time | Source: Microsoft 1.0-preview(v1)+. | +| x_ServicePeriodStart | Date/time | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuCoreCount | String | Source: Hubs add-on. | +| x_SkuDescription | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuDetails | Dynamic | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuInstanceType | String | Source: Hubs add-on. | +| x_SkuIsCreditEligible | Bool | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuLicenseQuantity | String | Source: Hubs add-on. | +| x_SkuLicenseStatus | String | Source: Hubs add-on. | +| x_SkuLicenseType | String | Source: Hubs add-on. | +| x_SkuLicenseUnit | String | Source: Hubs add-on. | +| x_SkuMeterCategory | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuMeterId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuMeterSubcategory | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuOfferId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuOperatingSystem | String | Source: Hubs add-on. | +| x_SkuOrderId | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuOrderName | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuPartNumber | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuPlanName | String | Source: Microsoft 1.2-preview+. | +| x_SkuRegion | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuServiceFamily | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuTerm | Int | Source: Microsoft 1.0-preview(v1)+. | +| x_SkuTier | String | Source: Microsoft 1.0-preview(v1)+. | +| x_SourceChanges | String | Source: Hubs add-on. | +| x_SourceName | String | Source: Hubs add-on. | +| x_SourceProvider | String | Source: Hubs add-on. | +| x_SourceType | String | Source: Hubs add-on. | +| x_SourceValues | Dynamic | Source: Hubs add-on. | +| x_SourceVersion | String | Source: Hubs add-on. | +| x_TotalDiscountPercent | String | Source: Hubs add-on. | +| x_TotalSavings | String | Source: Hubs add-on. | +| x_UsageType | String | Source: AWS 1.0. |
@@ -539,12 +539,12 @@ parse_resourceid('/subscriptions/###/resourceGroups/foo/providers/Microsoft.Comp ```json { - "ResourceId": "/subscriptions/###/resourceGroups/foo/providers/Microsoft.Compute/virtualMachines/bar", - "ResourceName": "bar", - "SubAccountId": "###", - "x_ResourceGroupName": "foo", - "x_ResourceProvider": "Microsoft.Compute", - "x_ResourceType": "microsoft.compute/virtualmachines" + "ResourceId": "/subscriptions/###/resourceGroups/foo/providers/Microsoft.Compute/virtualMachines/bar", + "ResourceName": "bar", + "SubAccountId": "###", + "x_ResourceGroupName": "foo", + "x_ResourceProvider": "Microsoft.Compute", + "x_ResourceType": "microsoft.compute/virtualmachines" } ``` @@ -555,8 +555,8 @@ parse_resourceid('/subscriptions/###/resourceGroups/foo/providers/Microsoft.Comp The **percent(table: (Count: long))** function in Data Explorer calculates the percentage of each record based on a required Count column. { - let total = todouble(toscalar(t | summarize sum(Count))); - percentOfTotal(t, total) +let total = todouble(toscalar(t | summarize sum(Count))); +percentOfTotal(t, total) }
@@ -581,12 +581,12 @@ Examples: ## plusminus() KQL function -The ****plusminus KQL function in Data Explorer a +/- sign based on the direction of the number. -plusminus(val: string) -{ - let neg = substring(val, 0, 1) == '-'; - iff(neg, val, strcat('+', val)) -} +The **plusminus()** KQL function in Data Explorer returns a +/- sign based on the direction of the number. + +Examples: + +- `plusminus(0.5)` = "+0.5" +- `plusminus(-0.5)` = "-0.5"
@@ -630,63 +630,63 @@ The **Prices_raw** table supports Microsoft Cost Management export schemas for E Columns in the **Prices** managed dataset include: -| Column | Type | Notes | -| ------------------------------------ | --------- | ------------------------------------------------- | -| BillingAccountId | String | | -| BillingAccountName | String | | -| BillingCurrency | String | | -| ChargeCategory | String | | -| CommitmentDiscountCategory | String | | -| CommitmentDiscountType | String | | -| CommitmentDiscountUnit | String | | -| ContractedUnitPrice | Real | | -| ListUnitPrice | Real | | -| PricingCategory | String | | -| PricingCurrency | String | New in FOCUS 1.2. Renamed from x_PricingCurrency. | -| PricingUnit | String | | -| SkuId | String | | -| SkuMeter | String | New in FOCUS 1.2. Renamed from x_SkuMeterName. | -| SkuPriceId | String | | -| SkuPriceIdv2 | String | Source: Hubs add-on. | -| x_BaseUnitPrice | Real | Source: Microsoft. | -| x_BillingAccountAgreement | String | Source: Hubs add-on. | -| x_BillingAccountId | String | Source: Microsoft, MCA only. | -| x_BillingProfileId | String | Source: Microsoft, MCA only. | -| x_CommitmentDiscountNormalizedRatio | Real | Source: Hubs add-on. | -| x_CommitmentDiscountSpendEligibility | String | Source: Hubs add-on. | -| x_CommitmentDiscountUsageEligibility | String | Source: Hubs add-on. | -| x_ContractedUnitPriceDiscount | Real | Source: Hubs add-on. | -| x_ContractedUnitPriceDiscountPercent | Real | Source: Hubs add-on. | -| x_EffectivePeriodEnd | Date/time | Source: Microsoft. | -| x_EffectivePeriodStart | Date/time | Source: Microsoft. | -| x_EffectiveUnitPrice | Real | Source: Microsoft. | -| x_EffectiveUnitPriceDiscount | Real | Source: Hubs add-on. | -| x_EffectiveUnitPriceDiscountPercent | Real | Source: Hubs add-on. | -| x_IngestionTime | Date/time | Source: Hubs add-on. | -| x_PricingBlockSize | Real | Source: Hubs add-on. | -| x_PricingSubcategory | String | Source: Hubs add-on. | -| x_PricingUnitDescription | String | Source: Microsoft. | -| x_SkuDescription | String | Source: Microsoft. | -| x_SkuId | String | Source: Microsoft. | -| x_SkuIncludedQuantity | Real | Source: Microsoft, EA only. | -| x_SkuMeterCategory | String | Source: Microsoft. | -| x_SkuMeterId | String | Source: Microsoft. | -| x_SkuMeterSubcategory | String | Source: Microsoft. | -| x_SkuMeterType | String | Source: Microsoft. | -| x_SkuPriceType | String | Source: Microsoft. | -| x_SkuProductId | String | Source: Microsoft. | -| x_SkuRegion | String | Source: Microsoft. | -| x_SkuServiceFamily | String | Source: Microsoft. | -| x_SkuOfferId | String | Source: Microsoft, EA only. | -| x_SkuPartNumber | String | Source: Microsoft, EA only. | -| x_SkuTerm | Int | Source: Microsoft. | -| x_SkuTier | Real | Source: Microsoft, MCA only. | -| x_SourceName | String | Source: Hubs add-on. | -| x_SourceProvider | String | Source: Hubs add-on. | -| x_SourceType | String | Source: Hubs add-on. | -| x_SourceVersion | String | Source: Hubs add-on. | -| x_TotalUnitPriceDiscount | Real | Source: Hubs add-on. | -| x_TotalUnitPriceDiscountPercent | Real | Source: Hubs add-on. | +| Column | Type | Notes | +| ------------------------------------ | --------- | ------------------------------------------------------------ | +| BillingAccountId | String | | +| BillingAccountName | String | | +| BillingCurrency | String | | +| ChargeCategory | String | | +| CommitmentDiscountCategory | String | | +| CommitmentDiscountType | String | | +| CommitmentDiscountUnit | String | | +| ContractedUnitPrice | Real | | +| ListUnitPrice | Real | | +| PricingCategory | String | | +| PricingCurrency | String | New in FOCUS 1.2. Renamed from x_PricingCurrency. | +| PricingUnit | String | | +| SkuId | String | | +| SkuMeter | String | New in FOCUS 1.2. Renamed from x_SkuMeterName. | +| SkuPriceId | String | | +| SkuPriceIdv2 | String | Source: Hubs add-on. | +| x_BaseUnitPrice | Real | Source: Microsoft. | +| x_BillingAccountAgreement | String | Source: Hubs add-on. | +| x_BillingAccountId | String | Source: Microsoft, MCA only. | +| x_BillingProfileId | String | Source: Microsoft, MCA only. | +| x_CommitmentDiscountNormalizedRatio | Real | Source: Hubs add-on. | +| x_CommitmentDiscountSpendEligibility | String | Reports savings plan pricing as of v15. Source: Hubs add-on. | +| x_CommitmentDiscountUsageEligibility | String | Reports reservation pricing as of v15. Source: Hubs add-on. | +| x_ContractedUnitPriceDiscount | Real | Source: Hubs add-on. | +| x_ContractedUnitPriceDiscountPercent | Real | Source: Hubs add-on. | +| x_EffectivePeriodEnd | Date/time | Source: Microsoft. | +| x_EffectivePeriodStart | Date/time | Source: Microsoft. | +| x_EffectiveUnitPrice | Real | Source: Microsoft. | +| x_EffectiveUnitPriceDiscount | Real | Source: Hubs add-on. | +| x_EffectiveUnitPriceDiscountPercent | Real | Source: Hubs add-on. | +| x_IngestionTime | Date/time | Source: Hubs add-on. | +| x_PricingBlockSize | Real | Source: Hubs add-on. | +| x_PricingSubcategory | String | Source: Hubs add-on. | +| x_PricingUnitDescription | String | Source: Microsoft. | +| x_SkuDescription | String | Source: Microsoft. | +| x_SkuId | String | Source: Microsoft. | +| x_SkuIncludedQuantity | Real | Source: Microsoft, EA only. | +| x_SkuMeterCategory | String | Source: Microsoft. | +| x_SkuMeterId | String | Source: Microsoft. | +| x_SkuMeterSubcategory | String | Source: Microsoft. | +| x_SkuMeterType | String | Source: Microsoft. | +| x_SkuPriceType | String | Source: Microsoft. | +| x_SkuProductId | String | Source: Microsoft. | +| x_SkuRegion | String | Source: Microsoft. | +| x_SkuServiceFamily | String | Source: Microsoft. | +| x_SkuOfferId | String | Source: Microsoft, EA only. | +| x_SkuPartNumber | String | Source: Microsoft, EA only. | +| x_SkuTerm | Int | Source: Microsoft. | +| x_SkuTier | Real | Source: Microsoft, MCA only. | +| x_SourceName | String | Source: Hubs add-on. | +| x_SourceProvider | String | Source: Hubs add-on. | +| x_SourceType | String | Source: Hubs add-on. | +| x_SourceVersion | String | Source: Hubs add-on. | +| x_TotalUnitPriceDiscount | Real | Source: Hubs add-on. | +| x_TotalUnitPriceDiscountPercent | Real | Source: Hubs add-on. |
diff --git a/docs-mslearn/toolkit/hubs/data-processing.md b/docs-mslearn/toolkit/hubs/data-processing.md index 9c3e1cabb..4d79e1aa6 100644 --- a/docs-mslearn/toolkit/hubs/data-processing.md +++ b/docs-mslearn/toolkit/hubs/data-processing.md @@ -3,7 +3,7 @@ title: FinOps hubs data processing description: Learn how FinOps hubs process data, including scope setup, data normalization, and optimization, to enhance cost management and analysis. author: flanakin ms.author: micflan -ms.date: 04/01/2026 +ms.date: 09/07/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit @@ -183,6 +183,11 @@ Transforms: - `x_CommitmentDiscountPercent` - `x_TotalDiscountPercent` - Added `x_SourceValues` to track data changes during ingestion. +- v15+: + - Select the highest on-demand price when duplicate price rows collapse under a single reservation price lookup key, so commitment discount savings aren't understated. + - Only recompute `ContractedCost` when it differs beyond a null-safe tolerance, avoiding no-op rewrites that polluted the `x_SourceValues` audit trail. + - Enrich dimensions (`PricingUnits`, `Regions`, `ResourceTypes`, `Services`) with `lookup` instead of `join`. + - Deduplicate the `Services` mapping per resource type to prevent cost row fan-out. ### Price data transforms @@ -217,6 +222,8 @@ Transforms: - Renamed `x_SkuMeterName` to `SkuMeter`. - Implemented the following columns when not set by Cost Management: - `CommitmentDiscountUnit` +- v15+: + - Swap `x_CommitmentDiscountSpendEligibility` and `x_CommitmentDiscountUsageEligibility` to match the `CommitmentDiscountCategory` value assigned by the same transform. The spend column now reports savings plan pricing and the usage column reports reservation pricing. Prices ingested before upgrading keep the old values until they're reingested. ### Recommendation data transforms diff --git a/docs-mslearn/toolkit/hubs/upgrade.md b/docs-mslearn/toolkit/hubs/upgrade.md index eb7b112d6..07f16426d 100644 --- a/docs-mslearn/toolkit/hubs/upgrade.md +++ b/docs-mslearn/toolkit/hubs/upgrade.md @@ -3,7 +3,7 @@ title: Upgrade your FinOps hubs description: Learn how to upgrade your existing FinOps hub instance to the latest version, including necessary steps and considerations. author: flanakin ms.author: micflan -ms.date: 04/01/2026 +ms.date: 09/07/2026 ms.topic: how-to ms.service: finops ms.subservice: finops-toolkit @@ -162,6 +162,8 @@ Replace the use of deprecated columns and functions: | 0.7 | N/A | `daterange()` | `datestring(datetime, [datetime])` | | 0.7 | N/A | `monthsago()` | `startofmonth(datetime, [offset])` | +As of FinOps hubs v15, `x_CommitmentDiscountSpendEligibility` and `x_CommitmentDiscountUsageEligibility` were fixed to use the correct values. In previous releases, they were accurate, but swapped. `x_CommitmentDiscountSpendEligibility` now represents savings plan eligibility correctly and `x_CommitmentDiscountUsageEligibility` represents reservation eligibility. Before v15, the values were saved to the wrong columns. Prices ingested before upgrading keep the old values. You will need to re-ingest older months to fix these rows. + If using unversioned functions or updating from the `v1_0` schema version, review your code for any explicit use of the `decimal` data type and replace it with `real`. As of FinOps hubs v12 (schema version `v1_2`), all `decimal` data types changed to `real` to improve performance. To learn more about schema versions, see [About schema versions](data-model.md#schema-version). If updating queries to use a newer schema version, use the following table to understand the changes introduced in each schema version for each managed dataset. diff --git a/docs/README.md b/docs/README.md index 6852359a2..aad161ccf 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,9 +18,9 @@ Automate and extend the Microsoft Cloud with starter kits, scripts, and advanced ---
-

What's new in August 2026v15

+

What's new in September 2026v15

- August adds a shared FinOps Toolkit plugin for Claude Code and GitHub Copilot CLI, private networking support for FinOps hubs, a new Instance size flexibility open dataset, several KQL performance and correctness fixes across hubs, workbooks, and alerts, and minor improvements in Power BI, the Optimization Engine, and the PowerShell module. + September adds a shared FinOps Toolkit plugin for Claude Code and GitHub Copilot CLI, private networking support for FinOps hubs, a new Instance size flexibility open dataset, several KQL performance and correctness fixes across hubs, workbooks, and alerts, and minor improvements in Power BI, the Optimization Engine, and the PowerShell module.

See all changes

diff --git a/docs/agent-plugin.md b/docs/agent-plugin.md index 3ab7a24f0..10f033c94 100644 --- a/docs/agent-plugin.md +++ b/docs/agent-plugin.md @@ -20,7 +20,7 @@ Bring AI-powered cloud financial management to Claude Code and GitHub Copilot CL The FinOps toolkit agent plugin pairs role-specific agents, ready-to-run commands, and a FinOps hubs query skill with a read-only Azure MCP server, so you can analyze cost data, review recommendations, and manage FinOps hubs without leaving your terminal.
-

What's new in August 2026v15

+

What's new in September 2026v15

The FinOps toolkit agent plugin is new this release: a shared plugin for Claude Code and GitHub Copilot CLI with 5 agents (CFO, FinOps practitioner, database query, hubs agent, and Azure capacity manager), 4 commands, a FinOps hubs KQL skill, and a read-only Azure MCP server.

diff --git a/docs/alerts.md b/docs/alerts.md index 2d33581e0..57d0cebfc 100644 --- a/docs/alerts.md +++ b/docs/alerts.md @@ -20,9 +20,9 @@ Accelerate your cost optimization efforts with scheduled notifications that cont Designed with flexibility in mind, FinOps alerts run on a fully configurable schedule, continuously scanning your selected subscriptions for idle resources.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, FinOps alerts made join kinds explicit in the idle application gateway and idle public IP queries so they no longer rely on the default join behavior. + In September, FinOps alerts made join kinds explicit in the idle application gateway and idle public IP queries so they no longer rely on the default join behavior.

See all changes

diff --git a/docs/guide.md b/docs/guide.md index 85bd3ef4b..8f711333a 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -16,9 +16,9 @@ Your guide to implementing FinOps in the Microsoft Cloud. FinOps is an expansive area with branches that extend out into many cloud management and governance activities. Cost especially is a part of many cloud and business initiatives, like security, resiliency, and adopting cloud-native solutions like AI. And to streamline cloud adoption in a way that prioritizes business value, you need the right guidance to help you make the right data-driven decisions. The Implementing FinOps guide is a collection of resources that help you facilitate your FinOps goals.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, the Implementing FinOps guide added a FinOps toolkit ecosystem page and aligned capability names and links to current FinOps Framework terminology. + In September, the Implementing FinOps guide added a FinOps toolkit ecosystem page and aligned capability names and links to current FinOps Framework terminology.

See all changes

diff --git a/docs/hubs.md b/docs/hubs.md index dae52d916..c8cd654c6 100644 --- a/docs/hubs.md +++ b/docs/hubs.md @@ -20,9 +20,9 @@ Open, extensible, and scalable cost governance for the enterprise. FinOps hubs are a reliable, trustworthy platform for cost analytics, insights, and optimization – virtual command centers for leaders throughout the organization to report on, monitor, and optimize cost based on their organizational needs.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, FinOps hubs added VNet and private network modes with optional NAT Gateway support, a guide to run FinOps hubs using a local Kusto emulator, and fixed several KQL join and cost recompute issues. + In September, FinOps hubs added VNet and private network modes with optional NAT Gateway support, a guide to run FinOps hubs using a local Kusto emulator, and fixed several KQL join, managed export permission, and cost recompute issues.

See all changes

diff --git a/docs/open-data.md b/docs/open-data.md index 97702ca4d..c6eca644b 100644 --- a/docs/open-data.md +++ b/docs/open-data.md @@ -20,9 +20,9 @@ Leverage open data to normalize and enhance your FinOps reporting. FinOps toolkit open data is used to transform Cost Management actual and amortized data into FOCUS. Use the same mappings to clean your FinOps datasets.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, open data added a new Instance size flexibility dataset sourced from the Azure Reservations Catalogs API, replacing the deprecated ISF ratio files, and fixed the commitment discount eligibility dataset refresh to be reproducible and complete. + In September, open data added a new Instance size flexibility dataset sourced from the Azure Reservations Catalogs API, replacing the deprecated ISF ratio files, and fixed the commitment discount eligibility dataset refresh to be reproducible and complete, including a fix for the spend and usage eligibility columns carrying each other's values.

See all changes

diff --git a/docs/optimization-engine.md b/docs/optimization-engine.md index ae9b90fa9..2d313d3aa 100644 --- a/docs/optimization-engine.md +++ b/docs/optimization-engine.md @@ -20,9 +20,9 @@ Optimize your Azure environment. The Azure Optimization Engine (AOE) is an extensible solution designed to generate optimization recommendations for your Azure environment. See it like a fully customizable Azure Advisor.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, Azure Optimization Engine migrated Log Analytics ingestion to a Data Collection Rule-based solution, switched to the new Instance size flexibility open dataset, and removed a deprecated Azure Classic administrators API call. + In September, Azure Optimization Engine added a comprehensive reference for runbooks, schedules, variables, and tables, migrated Log Analytics ingestion to a Data Collection Rule-based solution, switched to the new Instance size flexibility open dataset, and removed a deprecated Azure Classic administrators API call.

diff --git a/docs/power-bi.md b/docs/power-bi.md index 55f4a9e60..5e45826db 100644 --- a/docs/power-bi.md +++ b/docs/power-bi.md @@ -20,9 +20,9 @@ Accelerate your analytics efforts with simple, targeted reports. Summarize and b FinOps toolkit Power BI reports provide a great starting point for FinOps reporting. Customize and augment reports with your own data to facilitate organizational requirements.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, Power BI reports switched to the new Instance size flexibility open dataset, fixed storage report refresh errors from ISO 8601 duration values, and paginated Azure Resource Graph queries to avoid payload size errors. + In September, Power BI reports switched to the new Instance size flexibility open dataset, fixed storage report refresh errors from ISO 8601 duration values, and paginated Azure Resource Graph queries to avoid payload size errors.

See all changes

diff --git a/docs/powershell.md b/docs/powershell.md index 2db1bcd74..b3ad52d45 100644 --- a/docs/powershell.md +++ b/docs/powershell.md @@ -20,9 +20,9 @@ Automate and scale your FinOps efforts with PowerShell commands that streamline The FinOps toolkit PowerShell module helps you automate and scale common Cost Management and FinOps toolkit management operations and work with FinOps toolkit open data.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, the PowerShell module added Initialize-FinOpsHubLocal for setting up a local FinOps hub with one command, updated test compatibility with Pester 6, and fixed Get-FinOpsCostExport -RunHistory to return the complete run history. + In September, the PowerShell module added Initialize-FinOpsHubLocal for setting up a local FinOps hub with one command, updated test compatibility with Pester 6, and fixed Get-FinOpsCostExport -RunHistory and Start-FinOpsCostExport date handling for UTC offsets.

See all changes

diff --git a/docs/workbooks.md b/docs/workbooks.md index 3210c5d09..f313d9e97 100644 --- a/docs/workbooks.md +++ b/docs/workbooks.md @@ -20,9 +20,9 @@ Engineering hub to maximize cloud ROI through FinOps. FinOps workbooks are Azure workbooks that provide a series of tools to help engineers perform targeted FinOps tasks, modeled after the Well-Architected Framework guidance.
-

What's new in August 2026v15

+

What's new in September 2026v15

- In August, FinOps workbooks fixed savings plan and Azure Hybrid Benefit queries that were silently dropping or missing recommendations due to implicit join behavior. + In September, FinOps workbooks fixed savings plan and Azure Hybrid Benefit queries that were silently dropping or missing recommendations due to implicit join behavior.

See all changes

From 38a9bbe3519a6dc559f971934d98e86f1da78cea Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Mon, 7 Sep 2026 17:04:34 -0700 Subject: [PATCH 5/9] Fix PathNotFound error in msexports ETL ingestion on first run (#2247) Co-authored-by: Claude Sonnet 5 --- .../modules/Microsoft.CostManagement/Exports/app.bicep | 5 +++-- .../modules/Microsoft.FinOpsHubs/Analytics/app.bicep | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/app.bicep b/src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/app.bicep index b372acac7..015eef74a 100644 --- a/src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/app.bicep +++ b/src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/app.bicep @@ -1109,6 +1109,7 @@ resource dataFactory 'Microsoft.DataFactory/factories@2018-06-01' existing = { } } fieldList: [ + 'exists' 'childItems' ] storeSettings: { @@ -1128,14 +1129,14 @@ resource dataFactory 'Microsoft.DataFactory/factories@2018-06-01' existing = { { activity: 'Get Existing Parquet Files' dependencyConditions: [ - 'Completed' + 'Succeeded' ] } ] userProperties: [] typeProperties: { items: { - value: '@if(contains(activity(\'Get Existing Parquet Files\').output, \'childItems\'), activity(\'Get Existing Parquet Files\').output.childItems, json(\'[]\'))' + value: '@if(and(activity(\'Get Existing Parquet Files\').output.exists, contains(activity(\'Get Existing Parquet Files\').output, \'childItems\')), activity(\'Get Existing Parquet Files\').output.childItems, json(\'[]\'))' type: 'Expression' } condition: { diff --git a/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/app.bicep b/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/app.bicep index 84a29d95c..b87b230a1 100644 --- a/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/app.bicep +++ b/src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/app.bicep @@ -1694,6 +1694,7 @@ resource pipeline_ExecuteIngestionETL 'Microsoft.DataFactory/factories/pipelines } } fieldList: [ + 'exists' 'childItems' ] storeSettings: { @@ -1720,7 +1721,7 @@ resource pipeline_ExecuteIngestionETL 'Microsoft.DataFactory/factories/pipelines userProperties: [] typeProperties: { items: { - value: '@if(contains(activity(\'Get Existing Parquet Files\').output, \'childItems\'), activity(\'Get Existing Parquet Files\').output.childItems, json(\'[]\'))' + value: '@if(and(activity(\'Get Existing Parquet Files\').output.exists, contains(activity(\'Get Existing Parquet Files\').output, \'childItems\')), activity(\'Get Existing Parquet Files\').output.childItems, json(\'[]\'))' type: 'Expression' } condition: { From 6e33ed6f52e6210c7b47e4c0cad7312db7ee9a93 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 12 Oct 2026 14:44:03 +0000 Subject: [PATCH 6/9] chore: Update ms.date in docs-mslearn files --- .../agent-plugin/finops-toolkit-agent-plugin-overview.md | 2 +- docs-mslearn/toolkit/finops-toolkit-overview.md | 2 +- docs-mslearn/toolkit/help/errors.md | 2 +- docs-mslearn/toolkit/hubs/data-model.md | 2 +- docs-mslearn/toolkit/hubs/data-processing.md | 2 +- docs-mslearn/toolkit/hubs/upgrade.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md b/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md index 159686331..eddd05bc2 100644 --- a/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md +++ b/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md @@ -3,7 +3,7 @@ title: FinOps toolkit agent plugin overview description: The FinOps toolkit agent plugin brings AI-powered cloud financial management to Claude Code and GitHub Copilot CLI. author: MSBrett ms.author: brettwil -ms.date: 08/14/2026 +ms.date: 10/12/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/finops-toolkit-overview.md b/docs-mslearn/toolkit/finops-toolkit-overview.md index 99e1cc6e4..370ffff25 100644 --- a/docs-mslearn/toolkit/finops-toolkit-overview.md +++ b/docs-mslearn/toolkit/finops-toolkit-overview.md @@ -3,7 +3,7 @@ title: FinOps toolkit overview description: Learn how the FinOps toolkit helps you automate and extend the Microsoft Cloud with starter kits, scripts, and advanced solutions to improve FinOps practices. author: flanakin ms.author: micflan -ms.date: 08/14/2026 +ms.date: 10/12/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/help/errors.md b/docs-mslearn/toolkit/help/errors.md index 00311561c..6b2f77fa0 100644 --- a/docs-mslearn/toolkit/help/errors.md +++ b/docs-mslearn/toolkit/help/errors.md @@ -3,7 +3,7 @@ title: Troubleshoot common FinOps toolkit errors description: This article describes common FinOps toolkit errors and provides solutions to help you resolve issues you might encounter. author: flanakin ms.author: micflan -ms.date: 08/14/2026 +ms.date: 10/12/2026 ms.topic: troubleshooting ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/hubs/data-model.md b/docs-mslearn/toolkit/hubs/data-model.md index 16790868c..11fc82a58 100644 --- a/docs-mslearn/toolkit/hubs/data-model.md +++ b/docs-mslearn/toolkit/hubs/data-model.md @@ -3,7 +3,7 @@ title: FinOps hubs data model description: Learn about the tables and functions available in FinOps hubs to build your own queries, reports, and dashboards. author: flanakin ms.author: micflan -ms.date: 09/07/2026 +ms.date: 10/12/2026 ms.topic: reference ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/hubs/data-processing.md b/docs-mslearn/toolkit/hubs/data-processing.md index 4d79e1aa6..215488382 100644 --- a/docs-mslearn/toolkit/hubs/data-processing.md +++ b/docs-mslearn/toolkit/hubs/data-processing.md @@ -3,7 +3,7 @@ title: FinOps hubs data processing description: Learn how FinOps hubs process data, including scope setup, data normalization, and optimization, to enhance cost management and analysis. author: flanakin ms.author: micflan -ms.date: 09/07/2026 +ms.date: 10/12/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/hubs/upgrade.md b/docs-mslearn/toolkit/hubs/upgrade.md index 07f16426d..31c3d5b7d 100644 --- a/docs-mslearn/toolkit/hubs/upgrade.md +++ b/docs-mslearn/toolkit/hubs/upgrade.md @@ -3,7 +3,7 @@ title: Upgrade your FinOps hubs description: Learn how to upgrade your existing FinOps hub instance to the latest version, including necessary steps and considerations. author: flanakin ms.author: micflan -ms.date: 09/07/2026 +ms.date: 10/12/2026 ms.topic: how-to ms.service: finops ms.subservice: finops-toolkit From 42484fc4a3c445be58ae1028f9e3545472849a26 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 14 Oct 2026 01:12:37 -0700 Subject: [PATCH 7/9] docs: update v15 changelog and what's new blurbs for October Co-Authored-By: Claude Sonnet 5.5 --- docs-mslearn/toolkit/changelog.md | 7 ++++--- docs/README.md | 4 ++-- docs/agent-plugin.md | 2 +- docs/alerts.md | 4 ++-- docs/guide.md | 4 ++-- docs/hubs.md | 4 ++-- docs/open-data.md | 4 ++-- docs/optimization-engine.md | 4 ++-- docs/power-bi.md | 4 ++-- docs/powershell.md | 4 ++-- docs/workbooks.md | 4 ++-- 11 files changed, 23 insertions(+), 22 deletions(-) diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index d94540d4d..d964dab05 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -3,7 +3,7 @@ title: FinOps toolkit changelog description: Review the latest features and enhancements in the FinOps toolkit, including updates to FinOps hubs, Power BI reports, and more. author: MSBrett ms.author: brettwil -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: reference ms.service: finops ms.subservice: finops-toolkit @@ -31,7 +31,7 @@ The following section lists features and enhancements that are currently in deve ## v15 -_Released September 2026_ +_Released October 2026_ ### [Implementing FinOps guide](../implementing-finops-guide.md) v15 @@ -112,6 +112,7 @@ _Released September 2026_ - **Added** - Added [Initialize-FinOpsHubLocal](powershell/hubs/initialize-finopshublocal.md) to set up a local FinOps hub in a running Kusto emulator with one command. + - Added [Get-FinOpsCommitmentDiscountEligibility](powershell/data/get-finopscommitmentdiscounteligibility.md) and [Get-FinOpsInstanceSizeFlexibility](powershell/data/get-finopsinstancesizeflexibility.md) to generate the commitment discount eligibility and instance size flexibility open data files ([#2298](https://github.com/microsoft/finops-toolkit/pull/2298)). - **Changed** - Updated PowerShell test compatibility with Pester 6 ([#2204](https://github.com/microsoft/finops-toolkit/pull/2204)). - **Fixed** @@ -124,7 +125,7 @@ _Released September 2026_ - **Added** - Added a new [Instance size flexibility](open-data.md#instance-size-flexibility) dataset that maps each ARM SKU to its instance size flexibility group and ratio, sourced from the Azure Reservations Catalogs API. It replaces the deprecated ISF ratio files hosted on `ccmstorageprod.blob.core.windows.net` ([#2090](https://github.com/microsoft/finops-toolkit/issues/2090)). - **Fixed** - - Fixed the commitment discount eligibility dataset refresh so it is reproducible and complete; retired meters now age out and previously missed meters are included ([#2164](https://github.com/microsoft/finops-toolkit/pull/2164)). + - Fixed the [instance size flexibility](open-data.md#instance-size-flexibility) ratio scale and region coverage, and made regeneration produce the same output on any host. The dataset grew from 1,353 to 1,363 SKUs ([#2308](https://github.com/microsoft/finops-toolkit/pull/2308), [#2331](https://github.com/microsoft/finops-toolkit/pull/2331)). - Fixed the [commitment discount eligibility](open-data.md#commitment-discount-eligibility) dataset refresh so it's reproducible and complete; retired meters now age out and previously missed meters are included ([#2164](https://github.com/microsoft/finops-toolkit/pull/2164)). - Fixed the weekly commitment discount eligibility refresh timing out before it could publish, which left the dataset unchanged since it first shipped in v14. The refresh now walks each price type directly instead of sharding by service family, and verifies completeness by comparing two independent traversals before writing ([#2251](https://github.com/microsoft/finops-toolkit/pull/2251)). - Fixed `x_CommitmentDiscountSpendEligibility` and `x_CommitmentDiscountUsageEligibility` carrying each other's values. FOCUS classifies a reservation as a usage commitment (committed to a quantity of usage) and a savings plan as a spend commitment (committed to an amount of money), so the spend column now reports savings plan pricing and the usage column reports reservation pricing. The dataset shipped with the two reversed from v14 ([#2279](https://github.com/microsoft/finops-toolkit/issues/2279)). diff --git a/docs/README.md b/docs/README.md index 5c152e69e..229a28a1c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -18,9 +18,9 @@ Automate and extend the Microsoft Cloud with starter kits, scripts, and advanced ---
-

What's new in September 2026v15

+

What's new in October 2026v15

- September adds a shared FinOps Toolkit plugin for Claude Code and GitHub Copilot CLI, private networking support for FinOps hubs, a new Instance size flexibility open dataset, several KQL performance and correctness fixes across hubs, workbooks, and alerts, and minor improvements in Power BI, the Optimization Engine, and the PowerShell module. + October adds a shared FinOps Toolkit plugin for Claude Code and GitHub Copilot CLI, private networking support for FinOps hubs, a new Instance size flexibility open dataset, several KQL performance and correctness fixes across hubs, workbooks, and alerts, and minor improvements in Power BI, the Optimization Engine, and the PowerShell module.

See all changes

diff --git a/docs/agent-plugin.md b/docs/agent-plugin.md index 10f033c94..b596054a3 100644 --- a/docs/agent-plugin.md +++ b/docs/agent-plugin.md @@ -20,7 +20,7 @@ Bring AI-powered cloud financial management to Claude Code and GitHub Copilot CL The FinOps toolkit agent plugin pairs role-specific agents, ready-to-run commands, and a FinOps hubs query skill with a read-only Azure MCP server, so you can analyze cost data, review recommendations, and manage FinOps hubs without leaving your terminal.
-

What's new in September 2026v15

+

What's new in October 2026v15

The FinOps toolkit agent plugin is new this release: a shared plugin for Claude Code and GitHub Copilot CLI with 5 agents (CFO, FinOps practitioner, database query, hubs agent, and Azure capacity manager), 4 commands, a FinOps hubs KQL skill, and a read-only Azure MCP server.

diff --git a/docs/alerts.md b/docs/alerts.md index 57d0cebfc..6d4d77de2 100644 --- a/docs/alerts.md +++ b/docs/alerts.md @@ -20,9 +20,9 @@ Accelerate your cost optimization efforts with scheduled notifications that cont Designed with flexibility in mind, FinOps alerts run on a fully configurable schedule, continuously scanning your selected subscriptions for idle resources.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, FinOps alerts made join kinds explicit in the idle application gateway and idle public IP queries so they no longer rely on the default join behavior. + In October, FinOps alerts made join kinds explicit in the idle application gateway and idle public IP queries so they no longer rely on the default join behavior.

See all changes

diff --git a/docs/guide.md b/docs/guide.md index 8f711333a..d29e15b0c 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -16,9 +16,9 @@ Your guide to implementing FinOps in the Microsoft Cloud. FinOps is an expansive area with branches that extend out into many cloud management and governance activities. Cost especially is a part of many cloud and business initiatives, like security, resiliency, and adopting cloud-native solutions like AI. And to streamline cloud adoption in a way that prioritizes business value, you need the right guidance to help you make the right data-driven decisions. The Implementing FinOps guide is a collection of resources that help you facilitate your FinOps goals.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, the Implementing FinOps guide added a FinOps toolkit ecosystem page and aligned capability names and links to current FinOps Framework terminology. + In October, the Implementing FinOps guide added a FinOps toolkit ecosystem page and aligned capability names and links to current FinOps Framework terminology.

See all changes

diff --git a/docs/hubs.md b/docs/hubs.md index c8cd654c6..5bbb21df8 100644 --- a/docs/hubs.md +++ b/docs/hubs.md @@ -20,9 +20,9 @@ Open, extensible, and scalable cost governance for the enterprise. FinOps hubs are a reliable, trustworthy platform for cost analytics, insights, and optimization – virtual command centers for leaders throughout the organization to report on, monitor, and optimize cost based on their organizational needs.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, FinOps hubs added VNet and private network modes with optional NAT Gateway support, a guide to run FinOps hubs using a local Kusto emulator, and fixed several KQL join, managed export permission, and cost recompute issues. + In October, FinOps hubs added VNet and private network modes with optional NAT Gateway support, a guide to run FinOps hubs using a local Kusto emulator, and fixed several KQL join, managed export permission, and cost recompute issues.

See all changes

diff --git a/docs/open-data.md b/docs/open-data.md index 30cb2ab17..11ef6dbd8 100644 --- a/docs/open-data.md +++ b/docs/open-data.md @@ -20,9 +20,9 @@ Leverage open data to normalize and enhance your FinOps reporting. FinOps toolkit open data is used to transform Cost Management actual and amortized data into FOCUS. Use the same mappings to clean your FinOps datasets.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, open data added a new Instance size flexibility dataset sourced from the Azure Reservations Catalogs API, replacing the deprecated ISF ratio files, and fixed the commitment discount eligibility dataset refresh to be reproducible and complete, including a fix for the spend and usage eligibility columns carrying each other's values. + In October, open data added a new Instance size flexibility dataset sourced from the Azure Reservations Catalogs API, replacing the deprecated ISF ratio files, fixed the commitment discount eligibility dataset refresh and its spend and usage columns, and corrected instance size flexibility ratios and region coverage.

See all changes

diff --git a/docs/optimization-engine.md b/docs/optimization-engine.md index 2d313d3aa..38013b494 100644 --- a/docs/optimization-engine.md +++ b/docs/optimization-engine.md @@ -20,9 +20,9 @@ Optimize your Azure environment. The Azure Optimization Engine (AOE) is an extensible solution designed to generate optimization recommendations for your Azure environment. See it like a fully customizable Azure Advisor.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, Azure Optimization Engine added a comprehensive reference for runbooks, schedules, variables, and tables, migrated Log Analytics ingestion to a Data Collection Rule-based solution, switched to the new Instance size flexibility open dataset, and removed a deprecated Azure Classic administrators API call. + In October, Azure Optimization Engine added a comprehensive reference for runbooks, schedules, variables, and tables, migrated Log Analytics ingestion to a Data Collection Rule-based solution, switched to the new Instance size flexibility open dataset, and removed a deprecated Azure Classic administrators API call.

diff --git a/docs/power-bi.md b/docs/power-bi.md index 5e45826db..14aac976b 100644 --- a/docs/power-bi.md +++ b/docs/power-bi.md @@ -20,9 +20,9 @@ Accelerate your analytics efforts with simple, targeted reports. Summarize and b FinOps toolkit Power BI reports provide a great starting point for FinOps reporting. Customize and augment reports with your own data to facilitate organizational requirements.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, Power BI reports switched to the new Instance size flexibility open dataset, fixed storage report refresh errors from ISO 8601 duration values, and paginated Azure Resource Graph queries to avoid payload size errors. + In October, Power BI reports switched to the new Instance size flexibility open dataset, fixed storage report refresh errors from ISO 8601 duration values, and paginated Azure Resource Graph queries to avoid payload size errors.

See all changes

diff --git a/docs/powershell.md b/docs/powershell.md index b3ad52d45..3d755e93e 100644 --- a/docs/powershell.md +++ b/docs/powershell.md @@ -20,9 +20,9 @@ Automate and scale your FinOps efforts with PowerShell commands that streamline The FinOps toolkit PowerShell module helps you automate and scale common Cost Management and FinOps toolkit management operations and work with FinOps toolkit open data.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, the PowerShell module added Initialize-FinOpsHubLocal for setting up a local FinOps hub with one command, updated test compatibility with Pester 6, and fixed Get-FinOpsCostExport -RunHistory and Start-FinOpsCostExport date handling for UTC offsets. + In October, the PowerShell module added Initialize-FinOpsHubLocal for setting up a local FinOps hub with one command, plus commands to generate the commitment discount eligibility and instance size flexibility open data, updated test compatibility with Pester 6, and fixed Get-FinOpsCostExport -RunHistory and Start-FinOpsCostExport date handling for UTC offsets.

See all changes

diff --git a/docs/workbooks.md b/docs/workbooks.md index f313d9e97..58e795a87 100644 --- a/docs/workbooks.md +++ b/docs/workbooks.md @@ -20,9 +20,9 @@ Engineering hub to maximize cloud ROI through FinOps. FinOps workbooks are Azure workbooks that provide a series of tools to help engineers perform targeted FinOps tasks, modeled after the Well-Architected Framework guidance.
-

What's new in September 2026v15

+

What's new in October 2026v15

- In September, FinOps workbooks fixed savings plan and Azure Hybrid Benefit queries that were silently dropping or missing recommendations due to implicit join behavior. + In October, FinOps workbooks fixed savings plan and Azure Hybrid Benefit queries that were silently dropping or missing recommendations due to implicit join behavior.

See all changes

From aeb0b114cd13e907e19b4dffe8f3bd8269625ff9 Mon Sep 17 00:00:00 2001 From: Michael Flanakin Date: Wed, 14 Oct 2026 01:12:37 -0700 Subject: [PATCH 8/9] chore: keep marketplace.json versions three-part during version updates Add an opt-in -AsSemVer switch to Get-Version and use it for marketplace.json so Update-Version stops rewriting 15.0.0 as 15.0. Co-Authored-By: Claude Sonnet 5.5 --- src/scripts/Get-Version.ps1 | 14 ++++++++++++++ src/scripts/Update-Version.ps1 | 5 +++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/scripts/Get-Version.ps1 b/src/scripts/Get-Version.ps1 index 90ad37c7f..452f681fc 100644 --- a/src/scripts/Get-Version.ps1 +++ b/src/scripts/Get-Version.ps1 @@ -16,6 +16,9 @@ .PARAMETER AsTag Optional. Returns the version as a git tag (e.g., "v13" instead of "13.0"). Default = false. + .PARAMETER AsSemVer + Optional. Returns a full three-part semantic version (e.g., "13.0.0" instead of "13.0") for files that require it, like marketplace.json. Default = false. + .PARAMETER AsDotNetVersion Optional. Indicates that the returned version should be in the format "x.x.x.x". Otherwise, semantic versioning is used. Default = false. @@ -33,6 +36,9 @@ param( [switch] $AsTag, + [switch] + $AsSemVer, + [switch] $AsDotNetVersion ) @@ -48,6 +54,14 @@ if ($AsTag) return 'v' + (($ver -replace '-.*$', '') -replace '\.0$', '') } +if ($AsSemVer) +{ + # Pad major.minor to major.minor.patch and keep any prerelease label + $base = ($ver -replace '-.*$', '') -split '\.' + while ($base.Count -lt 3) { $base += '0' } + return ($base[0..2] -join '.') + ($ver -replace '^[^-]*', '') +} + if ($AsDotNetVersion -and $ver.Contains('-')) { $arr = (($ver -replace '-[^\.0-9]+', '') -split '\.') + @(0, 0) diff --git a/src/scripts/Update-Version.ps1 b/src/scripts/Update-Version.ps1 index ee814b78e..03ddb091b 100644 --- a/src/scripts/Update-Version.ps1 +++ b/src/scripts/Update-Version.ps1 @@ -141,6 +141,7 @@ if ($update -or $Version) # Update version in marketplace.json plugin entries Write-Verbose "Updating marketplace.json files..." + $semVer = & "$PSScriptRoot/Get-Version" -AsSemVer Get-RepositoryVersionFiles "marketplace.json" ` | ForEach-Object { $json = Get-Content $_ -Raw | ConvertFrom-Json @@ -149,13 +150,13 @@ if ($update -or $Version) Write-Verbose "- $($_.FullName.Replace($repoRoot + [IO.Path]::DirectorySeparatorChar, ''))" if ($json.PSObject.Properties['metadata'] -and $json.metadata.PSObject.Properties['version']) { - $json.metadata.version = $ver + $json.metadata.version = $semVer } foreach ($plugin in $json.plugins) { if ($plugin.PSObject.Properties['version']) { - $plugin.version = $ver + $plugin.version = $semVer } } $json | ConvertTo-Json -Depth 10 | Out-File $_ -Encoding utf8 -NoNewline From 4a3c5a6d191f52006b24f86b4cbe4940793f92ca Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 14 Oct 2026 08:14:38 +0000 Subject: [PATCH 9/9] chore: Update ms.date in docs-mslearn files --- .../agent-plugin/finops-toolkit-agent-plugin-overview.md | 2 +- docs-mslearn/toolkit/finops-toolkit-overview.md | 2 +- docs-mslearn/toolkit/help/errors.md | 2 +- docs-mslearn/toolkit/hubs/data-model.md | 2 +- docs-mslearn/toolkit/hubs/data-processing.md | 2 +- docs-mslearn/toolkit/hubs/upgrade.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md b/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md index eddd05bc2..0bbf4be5f 100644 --- a/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md +++ b/docs-mslearn/toolkit/agent-plugin/finops-toolkit-agent-plugin-overview.md @@ -3,7 +3,7 @@ title: FinOps toolkit agent plugin overview description: The FinOps toolkit agent plugin brings AI-powered cloud financial management to Claude Code and GitHub Copilot CLI. author: MSBrett ms.author: brettwil -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/finops-toolkit-overview.md b/docs-mslearn/toolkit/finops-toolkit-overview.md index 370ffff25..befb94deb 100644 --- a/docs-mslearn/toolkit/finops-toolkit-overview.md +++ b/docs-mslearn/toolkit/finops-toolkit-overview.md @@ -3,7 +3,7 @@ title: FinOps toolkit overview description: Learn how the FinOps toolkit helps you automate and extend the Microsoft Cloud with starter kits, scripts, and advanced solutions to improve FinOps practices. author: flanakin ms.author: micflan -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/help/errors.md b/docs-mslearn/toolkit/help/errors.md index 6b2f77fa0..04325eb7b 100644 --- a/docs-mslearn/toolkit/help/errors.md +++ b/docs-mslearn/toolkit/help/errors.md @@ -3,7 +3,7 @@ title: Troubleshoot common FinOps toolkit errors description: This article describes common FinOps toolkit errors and provides solutions to help you resolve issues you might encounter. author: flanakin ms.author: micflan -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: troubleshooting ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/hubs/data-model.md b/docs-mslearn/toolkit/hubs/data-model.md index 11fc82a58..c16ab287e 100644 --- a/docs-mslearn/toolkit/hubs/data-model.md +++ b/docs-mslearn/toolkit/hubs/data-model.md @@ -3,7 +3,7 @@ title: FinOps hubs data model description: Learn about the tables and functions available in FinOps hubs to build your own queries, reports, and dashboards. author: flanakin ms.author: micflan -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: reference ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/hubs/data-processing.md b/docs-mslearn/toolkit/hubs/data-processing.md index 215488382..f941c32ee 100644 --- a/docs-mslearn/toolkit/hubs/data-processing.md +++ b/docs-mslearn/toolkit/hubs/data-processing.md @@ -3,7 +3,7 @@ title: FinOps hubs data processing description: Learn how FinOps hubs process data, including scope setup, data normalization, and optimization, to enhance cost management and analysis. author: flanakin ms.author: micflan -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit diff --git a/docs-mslearn/toolkit/hubs/upgrade.md b/docs-mslearn/toolkit/hubs/upgrade.md index 31c3d5b7d..1c7dfa099 100644 --- a/docs-mslearn/toolkit/hubs/upgrade.md +++ b/docs-mslearn/toolkit/hubs/upgrade.md @@ -3,7 +3,7 @@ title: Upgrade your FinOps hubs description: Learn how to upgrade your existing FinOps hub instance to the latest version, including necessary steps and considerations. author: flanakin ms.author: micflan -ms.date: 10/12/2026 +ms.date: 10/14/2026 ms.topic: how-to ms.service: finops ms.subservice: finops-toolkit