Merge dev into features/hubs-recs#2055
Merged
flanakin merged 32 commits intofeatures/hubs-recsfrom Mar 14, 2026
Merged
Conversation
Co-authored-by: Stephane Lapointe <stephane.lapointe@workleap.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Roland Krummenacher <roland.krummenacher@alescent.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: msbrett <msbrett@users.no-reply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
#1991) Co-authored-by: Roland Krummenacher <roland.krummenacher@alescent.com> Co-authored-by: Michael Flanakin <flanakin@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: msbrett <msbrett@users.no-reply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
…ns in Power BI storage templates (#1853) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MSBrett <24294904+MSBrett@users.noreply.github.com> Co-authored-by: Michael Flanakin <flanakin@users.noreply.github.com> Co-authored-by: flanakin <399533+flanakin@users.noreply.github.com>
…#1855) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MSBrett <24294904+MSBrett@users.noreply.github.com> Co-authored-by: Michael Flanakin <flanakin@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: MSBrett <24294904+MSBrett@users.noreply.github.com> Co-authored-by: Roland Krummenacher <roland.krummenacher@outlook.com> Co-authored-by: RolandKrummenacher <1803486+RolandKrummenacher@users.noreply.github.com> Co-authored-by: flanakin <399533+flanakin@users.noreply.github.com> Co-authored-by: Michael Flanakin <flanakin@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Michael Flanakin <flanakin@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: copilot-pull-request-reviewer <copilot-pull-request-reviewer@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…hubs-recs # Conflicts: # docs-mslearn/toolkit/changelog.md # docs-mslearn/toolkit/hubs/template.md
RolandKrummenacher
approved these changes
Mar 14, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
This pull request merges recent dev updates into features/hubs-recs, bringing in the newer FinOps hubs “app metadata contract” pattern for Bicep modules, build/publish script improvements, PowerShell ShouldProcess/WhatIf alignment, and broad Microsoft Learn docs formatting/date updates.
Changes:
- Introduces typed
metadatacontracts for FinOps hubs Bicep apps (Core/Analytics/Exports/ManagedExports) and wires module-to-module dependencies through*.outputs.metadata. - Updates packaging/build scripts to support metadata publishing and version/tag handling (
Get-Version -AsTag, version placeholder replacement, package manifest copy logic). - Adds/updates PowerShell tests and docs linting; refreshes many
docs-mslearnpages (includingms.dateand formatting tweaks).
Reviewed changes
Copilot reviewed 187 out of 190 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/templates/finops-hub/package-manifest.json | Adds packaging manifest to include Bicep metadata files in deployment artifacts. |
| src/templates/finops-hub/modules/hub.bicep | Passes core/exports metadata between modules; updates outputs to new metadata shape. |
| src/templates/finops-hub/modules/fx/scripts/Init-DataFactory.ps1 | Adds pre-check/polling logic for ADF trigger event subscription state. |
| src/templates/finops-hub/modules/fx/hub-types.bicep | Adds version comparison helpers and isSupportedVersion() UDF. |
| src/templates/finops-hub/modules/fx/hub-eventTrigger.bicep | Exposes trigger name output. |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/RemoteHub/app.bicep | Switches to Core metadata contract and version validation; aligns dataset/container naming. |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Core/metadata.bicep | New exported AppMetadata type for Core shared resources. |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Core/app.bicep | Adds app metadata block, shared ARM linked service, and metadata output object. |
| src/templates/finops-hub/modules/Microsoft.FinOpsHubs/Analytics/metadata.bicep | New exported AppMetadata type for Analytics. |
| src/templates/finops-hub/modules/Microsoft.CostManagement/ManagedExports/metadata.bicep | New exported AppMetadata type for Managed Exports. |
| src/templates/finops-hub/modules/Microsoft.CostManagement/Exports/metadata.bicep | New exported AppMetadata type for Exports. |
| src/templates/finops-hub/bicepconfig.json | Enables experimental userDefinedConstraints for @validate. |
| src/scripts/Update-Version.ps1 | Uses Get-Version -AsTag for tag derivation. |
| src/scripts/Test-PowerShell.ps1 | Adds Workbooks/Actions switches to control test selection. |
| src/scripts/Publish-Toolkit.ps1 | Ensures Find-Repo returns a single match deterministically. |
| src/scripts/Package-Toolkit.ps1 | Updates zip naming/tagging and implements manifest-driven recursive copy with wildcard destination. |
| src/scripts/New-Directory.ps1 | Improves comment-based help documentation. |
| src/scripts/Invoke-Task.ps1 | Updates help text for version-related parameters. |
| src/scripts/Get-Version.ps1 | Adds -AsTag switch and improves help text. |
| src/scripts/Build-Workbook.ps1 | Fixes/clarifies help ordering and example description. |
| src/scripts/Build-Toolkit.ps1 | Replaces $$ftkver$$ placeholders in built app.bicep files. |
| src/scripts/Build-PowerBI.ps1 | Clarifies parameter help text. |
| src/scripts/Build-Bicep.ps1 | Adds CmdletBinding and updates help text for Module parameter. |
| src/powershell/Tests/Unit/New-FinOpsCostExport.Tests.ps1 | Tightens assertions by trimming trailing slashes. |
| src/powershell/Tests/Unit/Deploy-FinOpsHub.Tests.ps1 | Fixes mocked deployment signature and adds Initialize-FinOpsHubDeployment mocks. |
| src/powershell/Tests/Lint/MsLearnDocs.Tests.ps1 | New lint tests enforcing YAML frontmatter + ms.date validity/range. |
| src/powershell/Tests/Integration/Hubs.Tests.ps1 | Replaces global required RP variable with helper function. |
| src/powershell/Tests/Initialize-Tests.ps1 | Refactors required RP setup into Get-FinOpsHubRequiredResourceProvider. |
| src/powershell/Public/Start-FinOpsCostExport.ps1 | Adds SupportsShouldProcess and gates execution with ShouldProcess. |
| src/powershell/Public/Remove-FinOpsHub.ps1 | Switches deletion output from host to information stream. |
| src/powershell/Public/Remove-FinOpsCostExport.ps1 | Updates file encoding (BOM) header. |
| src/powershell/Public/New-FinOpsCostExport.ps1 | Adds SupportsShouldProcess; gates RP registration and export creation with ShouldProcess. |
| src/powershell/Public/Initialize-FinOpsHubDeployment.ps1 | Uses ShouldProcess around provider registration. |
| src/powershell/Public/Get-FinOpsCostExport.ps1 | Updates file encoding (BOM) header. |
| src/powershell/Private/Split-AzureResourceId.ps1 | Removes null/empty short-circuit return (regression). |
| src/powershell/Private/Save-FinOpsHubTemplate.ps1 | Trims trailing whitespace. |
| src/powershell/Private/Invoke-Rest.ps1 | Trims trailing whitespace. |
| src/power-bi/storage/Shared.Dataset/definition/tables/Costs.tmdl | Adds Capacity Reservation columns to dataset definition. |
| src/power-bi/queries/ftk_NormalizeSchema.pq | Adds capacity reservation normalization columns. |
| docs/guide.md | Removes e-book tile from guide page. |
| docs/README.md | Adds contributors to docs contributors table. |
| docs-mslearn/toolkit/workbooks/optimization.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/workbooks/governance.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/workbooks/finops-workbooks-overview.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/roadmap.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/toolkit/get-finopstoolkitversion.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/toolkit/finops-toolkit-commands.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/powershell-commands.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/remove-finopshubscope.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/remove-finopshub.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/register-finopshubproviders.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/initialize-finopshubdeployment.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/get-finopshub.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/finops-hubs-commands.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/hubs/deploy-finopshub.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/data/open-data-commands.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/data/get-finopsservice.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/data/get-finopsresourcetype.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/data/get-finopsregion.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/data/get-finopspricingunit.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/cost/start-finopscostexport.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/cost/remove-finopscostexport.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/cost/new-finopscostexport.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/cost/get-finopscostexport.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/cost/cost-management-commands.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/powershell/cost/add-finopsserviceprincipal.md | Updates ms.date and formatting/ignore blocks. |
| docs-mslearn/toolkit/power-bi/workload-optimization.md | Updates ms.date, export requirements, and download blocks. |
| docs-mslearn/toolkit/power-bi/template-app.md | Updates ms.date and download/feedback blocks. |
| docs-mslearn/toolkit/power-bi/reports.md | Updates ms.date, export requirements, and download blocks. |
| docs-mslearn/toolkit/power-bi/rate-optimization.md | Updates ms.date, export requirements, and download blocks. |
| docs-mslearn/toolkit/power-bi/invoicing.md | Updates ms.date, export requirements, and download blocks. |
| docs-mslearn/toolkit/power-bi/help-me-choose.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/power-bi/governance.md | Updates ms.date, export requirements, and download blocks. |
| docs-mslearn/toolkit/power-bi/data-ingestion.md | Updates ms.date, table formatting, and download blocks. |
| docs-mslearn/toolkit/power-bi/cost-summary.md | Updates ms.date, tables, and minor wording. |
| docs-mslearn/toolkit/power-bi/connector.md | Updates ms.date, download blocks, and minor wording. |
| docs-mslearn/toolkit/optimization-engine/troubleshooting.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/optimization-engine/suppress-recommendations.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/optimization-engine/reports.md | Updates ms.date and adds download block formatting. |
| docs-mslearn/toolkit/optimization-engine/overview.md | Updates ms.date and adjusts formatting. |
| docs-mslearn/toolkit/optimization-engine/faq.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/optimization-engine/customize.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/optimization-engine/configure-workspaces.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/hubs/upgrade.md | Updates ms.date and adds ignore blocks / table formatting. |
| docs-mslearn/toolkit/hubs/savings-calculations.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/hubs/configure-remote-hubs.md | Updates ms.date, terminology, and list formatting. |
| docs-mslearn/toolkit/hubs/configure-dashboards.md | Updates ms.date and consolidates markdownlint suppression. |
| docs-mslearn/toolkit/hubs/configure-ai.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/hubs/compatibility.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/help/troubleshooting.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/help/terms.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/help/support.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/help/help-options.md | Updates ms.date and removes markdownlint suppression. |
| docs-mslearn/toolkit/help/deploy.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/help/data-dictionary.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/finops-toolkit-overview.md | Updates ms.date and adds ignore blocks for download links. |
| docs-mslearn/toolkit/bicep-registry/scheduled-actions.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/bicep-registry/modules.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/toolkit/alerts/finops-alerts-overview.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/overview.md | Updates ms.date, swaps FinOps video URL, and adds ignore blocks. |
| docs-mslearn/index.yml | Removes e-book highlighted card. |
| docs-mslearn/implementing-finops-guide.md | Updates ms.date and removes e-book link. |
| docs-mslearn/framework/understand/understand-cloud-usage-cost.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/understand/reporting.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/understand/ingestion.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/understand/anomalies.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/understand/allocation.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/quantify/unit-economics.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/quantify/quantify-business-value.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/quantify/planning.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/quantify/forecasting.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/quantify/budgeting.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/quantify/benchmarking.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/optimize/workloads.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/optimize/rates.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/optimize/optimize-cloud-usage-cost.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/tools-services.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/operations.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/onboarding.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/manage-finops.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/invoicing-chargeback.md | Updates ms.date and fixes spacing. |
| docs-mslearn/framework/manage/intersecting-disciplines.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/governance.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/education.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/manage/assessment.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/finops-framework.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/framework/capabilities.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/focus/what-is-focus.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/focus/validate.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/focus/metadata.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/focus/mapping.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/focus/convert.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/focus/conformance-summary.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/best-practices/web.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/best-practices/library.md | Updates ms.date and adds ignore blocks. |
| docs-mslearn/TOC.yml | Removes e-book TOC entry; adds remote hubs and ADLS connectivity entries. |
| docs-mslearn/.markdownlint.json | Adds markdownlint configuration for docs-mslearn. |
| README.md | Adds contributors to root contributors table. |
| .vscode/settings.json | Tweaks PowerShell editor settings (encoding/whitespace). |
| .gitignore | Adjusts Claude/AI ignore patterns. |
| .github/workflows/update-mslearn-dates.yml | New workflow to auto-update ms.date in changed docs-mslearn markdown files. |
| .github/policies/pulls-04-respond.yml | Expands policy triggers to issue comments by author. |
| .github/policies/pulls-03-feedback.yml | Expands feedback policy to include “Commented” reviews by non-authors. |
| .github/policies/issues-02-duplicate.yml | Changes duplicate handling to close issues and adjust labels. |
| .github/policies/issues-01-new.yml | Updates description to include welcome comment behavior. |
| .github/policies/issues-00-conventions.yml | Updates label mapping for Workbooks to Tool: Workbooks. |
| .github/copilot-instructions.md | Updates changelog requirement guidance and formatting cleanup. |
| .github/PULL_REQUEST_TEMPLATE.md | Adds “Deploy to test?” checklist section. |
| .editorconfig | Sets UTF-8 BOM charset for PowerShell files and adds psm1/psd1 sections. |
| .claude/settings.json | Adds tracked Claude settings file. |
| .build/BuildHelper/Start-PesterTest.ps1 | Makes Pester run set process exit code on completion. |
| .all-contributorsrc | Adds new contributors entries. |
Comment on lines
82
to
114
| @@ -93,7 +112,10 @@ function Set-BlobTriggerSubscription([string]$TriggerName, [switch]$Subscribe) | |||
| -DataFactoryName $DataFactoryName ` | |||
| -Name $TriggerName | Out-Null | |||
| } | |||
Comment on lines
105
to
+107
| # List all resources to be deleted | ||
| Write-Host "The following resources will be deleted:" | ||
| $resources | ForEach-Object { Write-Host "- $($_.ResourceId)" } | ||
| Write-Information "The following resources will be deleted:" | ||
| $resources | ForEach-Object { Write-Information "- $($_.ResourceId)" } |
Comment on lines
50
to
52
| if ($Id) | ||
| { | ||
| Write-Verbose "Parsing resource ID: '$Id'" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
devbranch intofeatures/hubs-recsto bring in metadata contracts, deployment UI improvements, and other v14 changesCore/metadata.bicepandoutputs.metadatapatternsTest plan
🤖 Generated with Claude Code