.
+
+
+
## ExportDataNotFound
Severity: Critical
diff --git a/docs-mslearn/toolkit/hubs/data-model.md b/docs-mslearn/toolkit/hubs/data-model.md
index e06a19519..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: 04/01/2026
+ms.date: 10/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.
@@ -533,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"
}
```
@@ -549,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)
}
@@ -575,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"
diff --git a/docs-mslearn/toolkit/hubs/data-processing.md b/docs-mslearn/toolkit/hubs/data-processing.md
index 9c3e1cabb..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: 04/01/2026
+ms.date: 10/14/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..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: 04/01/2026
+ms.date: 10/14/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-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 82d0674bf..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 April 2026v14
+
What's new in October 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.
+ 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
@@ -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/_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/docs/agent-plugin.md b/docs/agent-plugin.md
new file mode 100644
index 000000000..b596054a3
--- /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 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.
+
+
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..6d4d77de2 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..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 April 2026v14
+
What's new in October 2026v15
- In April, the Implementing FinOps guide updated the FinOps overview video and error handling documentation.
+ 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 c3ff69557..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 April 2026v14
+
What's new in October 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 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 7dd883fbb..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 April 2026v14
+
What's new in October 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 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 878b982d0..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 April 2026v14
+
What's new in October 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 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.
See all changes
diff --git a/docs/power-bi.md b/docs/power-bi.md
index b64c6fd4a..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 April 2026v14
+
What's new in October 2026v15
- In April, Power BI reports fixed storage report refresh errors caused by unrecognized Term values like P10Y in pricesheet exports.
+ 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 26cd4b910..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 April 2026v14
+
What's new in October 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 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 7559f8d03..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 April 2026v14
+
What's new in October 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 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
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/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
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/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: {
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