Skip to content

Merge dev into features/hubs-recs#2055

Merged
flanakin merged 32 commits intofeatures/hubs-recsfrom
flanakin/merge-dev-to-hubs-recs
Mar 14, 2026
Merged

Merge dev into features/hubs-recs#2055
flanakin merged 32 commits intofeatures/hubs-recsfrom
flanakin/merge-dev-to-hubs-recs

Conversation

@flanakin
Copy link
Collaborator

Summary

  • Merge latest dev branch into features/hubs-recs to bring in metadata contracts, deployment UI improvements, and other v14 changes
  • Resolves Copilot review comments on [Hubs] Split the Recommendations app #2052 about missing Core/metadata.bicep and outputs.metadata patterns

Test plan

  • Verify no merge conflicts remain
  • Verify hubs-recs branch builds after merge

🤖 Generated with Claude Code

RolandKrummenacher and others added 30 commits February 13, 2026 12:13
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>
)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.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>
Co-authored-by: github-actions[bot] <github-actions[bot]@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
Copilot AI review requested due to automatic review settings March 14, 2026 12:15
@flanakin flanakin merged commit f10d052 into features/hubs-recs Mar 14, 2026
6 checks passed
@flanakin flanakin deleted the flanakin/merge-dev-to-hubs-recs branch March 14, 2026 12:19
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 metadata contracts 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-mslearn pages (including ms.date and 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'"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs: Review 👀 PR that is ready to be reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants