Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 23 additions & 16 deletions docs-mslearn/toolkit/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,31 +36,23 @@ The following section lists features and enhancements that are currently in deve
- Cost Management export modules for subscriptions and resource groups.
-->

<br>
<br><a name="latest"></a>

## v14

### [FinOps hubs](hubs/finops-hubs-overview.md) v14
_Released March 2026_

- **Changed**
- Improved deployment UI to consolidate hub mode selection into a single radio button group with four mutually exclusive options: None (storage only for Power BI reports), Azure Data Explorer, Microsoft Fabric, or Remote Hub ([#1929](https://github.com/microsoft/finops-toolkit/issues/1929)).
- Remote Hub configuration (storage URI, storage key, and purge protection) is now displayed in the Basics tab when Remote Hub mode is selected, making the mutual exclusivity clear.
- Data Explorer SKU and retention settings are now only visible when Azure Data Explorer mode is selected.

### [PowerShell module](powershell/powershell-commands.md) v14
### [Implementing FinOps guide](../implementing-finops-guide.md) v14

- **Added**
- Added `-WhatIf` support for resource provider registration in [New-FinOpsCostExport](powershell/cost-management/New-FinOpsCostExport.md).
- **Fixed**
- Fixed inverted verbose logging in [Start-FinOpsCostExport](powershell/cost-management/Start-FinOpsCostExport.md) that showed blank dates when a date range was specified.
- Addressed minor lint warnings across PowerShell commands.

<br><a name="latest"></a>

## v14
- Added EA enrollment 403 troubleshooting steps to the [common errors](help/errors.md#403) page ([#1754](https://github.com/microsoft/finops-toolkit/issues/1754)).

### [FinOps hubs](hubs/finops-hubs-overview.md) v14

- **Changed**
- Improved deployment UI to consolidate hub mode selection into a single radio button group with four mutually exclusive options: None (storage only for Power BI reports), Azure Data Explorer, Microsoft Fabric, or Remote Hub ([#1929](https://github.com/microsoft/finops-toolkit/issues/1929)).
- Remote Hub configuration (storage URI, storage key, and purge protection) is now displayed in the Basics tab when Remote Hub mode is selected, making the mutual exclusivity clear.
- Data Explorer SKU and retention settings are now only visible when Azure Data Explorer mode is selected.
- **Fixed**
- Fixed Init-DataFactory deployment script failing when an Event Grid subscription is already provisioning by checking subscription status before attempting subscribe/unsubscribe and polling separately for completion ([#1996](https://github.com/microsoft/finops-toolkit/issues/1996)).

Expand All @@ -71,6 +63,21 @@ The following section lists features and enhancements that are currently in deve
- Azure Hybrid Benefit doesn't apply to Dev/Test resources as Windows licenses are already covered by Visual Studio subscriptions.
- Fixed Azure Hybrid Benefit reports to include Windows VMs from all publishers, not just Microsoft-published images ([#1793](https://github.com/microsoft/finops-toolkit/issues/1793)).

### [PowerShell module](powershell/powershell-commands.md) v14

- **Added**
- Added `-WhatIf` support for resource provider registration in [New-FinOpsCostExport](powershell/cost-management/New-FinOpsCostExport.md).
- **Fixed**
- Fixed inverted verbose logging in [Start-FinOpsCostExport](powershell/cost-management/Start-FinOpsCostExport.md) that showed blank dates when a date range was specified.
- Addressed minor lint warnings across PowerShell commands.

<!-- prettier-ignore-start -->
> [!div class="nextstepaction"]
> [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v14)
> [!div class="nextstepaction"]
> [Full changelog](https://github.com/microsoft/finops-toolkit/compare/v13...v14)
<!-- prettier-ignore-end -->

<br>

## v13 Update 1
Expand Down
17 changes: 16 additions & 1 deletion docs-mslearn/toolkit/help/errors.md
Original file line number Diff line number Diff line change
Expand Up @@ -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: 02/24/2026
ms.date: 03/02/2026
ms.topic: troubleshooting
ms.service: finops
ms.subservice: finops-toolkit
Expand All @@ -25,6 +25,21 @@ If the information provided doesn't help you, [Create a support request](/azure/

<br>

## 403

<sup>Severity: Critical</sup>

You may see this error when using [Add-FinOpsServicePrincipal](../powershell/cost/add-finopsserviceprincipal.md) to assign EA enrollment reader permissions to a service principal. The billing role assignment API returns HTTP 403 when the request is rejected.

**Mitigation**:

1. Confirm you are using the service principal object ID from **Enterprise applications** in the Azure portal, not the application object ID from **App registrations**. See [Assign roles to EA service principals](https://learn.microsoft.com/azure/cost-management-billing/manage/assign-roles-azure-service-principals).
2. Confirm your account has the **Enrollment writer** role in your Enterprise Agreement. See [Understand EA administrative roles](https://learn.microsoft.com/azure/cost-management-billing/manage/understand-ea-roles).
3. Confirm the billing account ID matches your EA enrollment number exactly.
4. If the error persists, try assigning the role directly through the [Billing Role Assignments REST API](https://learn.microsoft.com/rest/api/billing/2019-10-01-preview/role-assignments/put) using the **Try it** feature.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding a cross-reference to the existing Access to the resource is forbidden section below, since both cover 403 scenarios. A user landing on either section should know the other exists.

For example, adding a line at the end of this section:

If this is not an EA enrollment scenario, see Access to the resource is forbidden.

And similarly adding a note in the existing section pointing back here for EA-specific 403 errors.

<br>

## Access to the resource is forbidden

<sup>Severity: Critical</sup>
Expand Down