<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>FinOps Blog articles</title>
    <link>https://techcommunity.microsoft.com/t5/finops-blog/bg-p/FinOpsBlog</link>
    <description>FinOps Blog articles</description>
    <pubDate>Fri, 24 Apr 2026 21:20:52 GMT</pubDate>
    <dc:creator>FinOpsBlog</dc:creator>
    <dc:date>2026-04-24T21:20:52Z</dc:date>
    <item>
      <title>Announcing savings plan for databases: flexible savings for modern, evolving workloads</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/announcing-savings-plan-for-databases-flexible-savings-for/ba-p/4503107</link>
      <description>&lt;P&gt;As organizations modernize their data platforms, database environments are constantly changing. Teams migrate between services, scale across regions, and evolve architectures to support new applications and AI driven workloads. But optimizing costs in these environments can be challenging, especially when savings options require locking into specific services, regions, or configurations.&lt;/P&gt;
&lt;P&gt;To help with these challenges, we’re introducing &lt;STRONG&gt;savings plan for databases&lt;/STRONG&gt;, a new way to save on eligible database services while maintaining the flexibility needed to modernize and grow your business.&lt;/P&gt;
&lt;P&gt;Savings plan for databases helps IT, engineering, and FinOps teams reduce database costs with a simple, spend based commitment—without slowing down architectural change.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What is savings plan for databases?&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Savings plan for databases is a &lt;STRONG&gt;spend based pricing model&lt;/STRONG&gt; that enables customers to save on eligible database services by committing to a &lt;STRONG&gt;fixed hourly spend for one year&lt;/STRONG&gt;. In return, customers receive &lt;STRONG&gt;lower prices—up to 35% compared to pay-as-you go pricing on select services*&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Instead of committing to a specific database service, region, or configuration, customers commit to an hourly dollar amount (for example, $5 per hour). The plan automatically applies savings to eligible database usage each hour, prioritizing the usage that delivers the greatest savings first—across services and regions—until the hourly commitment is met.&lt;/P&gt;
&lt;P&gt;Any usage beyond the commitment continues at pay-as-you go rates, ensuring flexibility as needs change.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Benefits designed for modern database workloads&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Flexibility as environments evolve&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Savings plan for databases is designed for change. Savings continue to apply as workloads modernize or move across regions—without requiring customers to repurchase or reconfigure commitments. This makes it well suited for dynamic environments where architectures are expected to evolve over time.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Automatic cost optimization&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;With a single hourly commitment, customers unlock discounted prices on eligible database usage. Savings are applied automatically each hour, ensuring customers get the most value from their commitment without manual management or constant tuning.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Predictable budgeting and forecasting&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A fixed hourly spend replaces variable pay-as-you-go costs with a predictable commitment, making it easier for FinOps and IT finance teams to forecast spend, plan budgets, and manage cloud investments with confidence.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;What services that are covered with the savings plan for databases:&lt;/STRONG&gt;&lt;/H2&gt;
&lt;img /&gt;
&lt;H2&gt;&lt;STRONG&gt;Savings plan for databases pricing&lt;/STRONG&gt;&lt;/H2&gt;
&lt;img&gt;Savings based on pay as you go list price. Savings calculated by comparing committed plan price to pay-as-you-go list price for the same usage. Savings calculations are based on list prices and do not vary by region. Pricing as of March 2026. Actual savings may vary based on usage. Pricing Calculator and Pricing Pages will be updated in future date to reflect savings plan for databases pricing and savings.&lt;/img&gt;
&lt;H2&gt;&lt;STRONG&gt;How to purchase a savings plan for databases&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Getting started is simple:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Review personalized recommendations&lt;/STRONG&gt; in the Azure portal based on recent database usage.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Choose an hourly commitment&lt;/STRONG&gt; and scope it into a subscription, resource group, management group, or entire account.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Select a payment option&lt;/STRONG&gt;—pay monthly or upfront at no additional cost—and optionally enable auto‑renewal.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Once purchased, savings are applied automatically to eligible database usage every hour. Learn more here on how to &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/cost-management-billing/savings-plan/buy-savings-plan" target="_blank" rel="noopener"&gt;purchase a savings plans here.&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Example: saving while modernizing&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Consider a team running a global application that uses Azure SQL Database and Azure Database for PostgreSQL today, with plans to expand into additional regions over the next year.&lt;/P&gt;
&lt;P&gt;Instead of purchasing individual reservations tied to specific services or regions, the team purchases a &lt;STRONG&gt;1‑year savings plan for databases with a $5/hour commitment&lt;/STRONG&gt;. As usage shifts across database services and regions, Azure automatically applies discounted prices to eligible usage up to the hourly commitment. The team continues modernizing without disruption—while benefiting from predictable savings.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;Savings plan for databases provides a new way to optimize database costs —without locking into fixed architectures. With hourly commitments, automatic optimization, and predictable costs, it’s designed to support modernization today and continued growth tomorrow.&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Get started&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;You can begin saving today:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;View your recommendation in &lt;/STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/advisor_cost_recommendation" target="_blank" rel="noopener"&gt;Azure Advisor&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Purchase a plan in&amp;nbsp;&lt;/STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/purchasesavingsplan" target="_blank" rel="noopener"&gt;Azure portal&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Visit the &lt;/STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/savings-plan" target="_blank" rel="noopener"&gt;Savings plan homepage&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Review the &lt;/STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/savingplans/doc" target="_blank" rel="noopener"&gt;Microsoft Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Watch demo videos at the&amp;nbsp;&lt;/STRONG&gt;&lt;A class="lia-external-url" href="https://aka.ms/AzurePricingVideos" target="_blank" rel="noopener"&gt;Azure Essentials Show&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;*Customers may see savings estimated to be between 0% and 35%. The 35% savings estimate is based on one Azure SQL Database serverless running for 12 months at a pay-as-you-go rate vs. a reduced rate for a 1-year savings plan. Based on Azure pricing as of March 2026. Prices are subject to change. Actual savings may vary based on location, database service, and/or usage. &lt;/P&gt;
&lt;P&gt;** Note that savings plan for databases will also be consumed by SQL Server on Azure Virtual Machines and SQL Server enabled by Azure Arc hourly license at the normal pay-go price.&lt;/P&gt;</description>
      <pubDate>Wed, 22 Apr 2026 20:09:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/announcing-savings-plan-for-databases-flexible-savings-for/ba-p/4503107</guid>
      <dc:creator>kyleikeda</dc:creator>
      <dc:date>2026-04-22T20:09:03Z</dc:date>
    </item>
    <item>
      <title>What’s new in FinOps toolkit 13 – January 2026</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/what-s-new-in-finops-toolkit-13-january-2026/ba-p/4493090</link>
      <description>&lt;P&gt;Whether you consider yourself a FinOps practitioner, someone who’s enthusiastic about driving cloud efficiency and maximizing the value you get from the cloud or were just asked to look at ways to reduce cost, the FinOps toolkit has something for you. This release focuses on stability and usability improvements across FinOps hubs, Power BI reports, and Azure Optimization Engine with a few key additions, like configuring Key Vault purge protection when deploying FinOps hubs and support for format and compression when creating Cost Management exports via PowerShell. Read on for details.&lt;/P&gt;
&lt;H1&gt;New to the FinOps toolkit?&lt;/H1&gt;
&lt;P&gt;In case you haven’t heard, the FinOps toolkit is an open-source collection of tools and resources that help you learn, adopt, and implement FinOps in the Microsoft Cloud. The foundation of the toolkit is the &lt;A href="http://aka.ms/finops/guide?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Implementing FinOps guide&lt;/A&gt; that helps you get started with FinOps whether you’re using native tools in the Azure portal, looking for ways to automate and extend those tools, or if you’re looking to build your own FinOps tools and reports. To learn more about the toolkit, how to provide feedback, or how to contribute, see&amp;nbsp;&lt;A href="https://aka.ms/ftk/docs?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit documentation&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Faster troubleshooting with expanded documentation&lt;/H1&gt;
&lt;P&gt;When something goes wrong, the fastest path to resolution is clear, comprehensive documentation. But finding the right guidance hasn't always been straightforward.&lt;/P&gt;
&lt;P&gt;This release addresses that gap across several fronts. The new &lt;A href="https://github.com/microsoft/finops-toolkit/blob/dev/docs-mslearn/toolkit/data-lake-storage-connectivity.md?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Data Lake Storage connectivity guide&lt;/A&gt; walks through connecting to FinOps hubs data from tools and services beyond Power BI. Updated &lt;A href="https://github.com/microsoft/finops-toolkit/blob/dev/docs-mslearn/toolkit/hubs/configure-scopes.md?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Configure scopes&lt;/A&gt; documentation clarifies support for multiple Azure scopes and cross-cloud data ingestion. New guidance explains &lt;A href="https://github.com/microsoft/finops-toolkit/blob/dev/docs-mslearn/toolkit/hubs/private-networking.md?WT.mc_id=finops-260210-micflan#removing-private-networking" target="_blank" rel="noopener"&gt;how to remove private networking&lt;/A&gt; to reduce costs when it's no longer needed.&lt;/P&gt;
&lt;P&gt;On the troubleshooting front, expanded guidance covers common Data Explorer ingestion errors, including SEM0080, ErrorCodeNotString, and ingestion drop failures. Power BI report documentation now includes export requirements that clarify which Cost Management exports each report needs. Updated FOCUS converter documentation covers the newly added 1.2-preview fields: ServiceSubcategory, InvoiceId, PricingCurrency, and SkuMeter.&lt;/P&gt;
&lt;P&gt;Have a tip that helped you get unblocked? &lt;A href="https://aka.ms/ftk/discuss?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Share it with the community&lt;/A&gt; to help others facing the same challenge and let us know if there’s anything we can do to help!&lt;/P&gt;
&lt;H1&gt;Join us for FinOps toolkit office hours&lt;/H1&gt;
&lt;P&gt;Community engagement has always been at the heart of the FinOps toolkit. Over the years, some of the best features and fixes have come directly from practitioners sharing what's working, what's not, and what they need next. That feedback loop is invaluable, and the community has been asking for a more direct way to connect with the team.&lt;/P&gt;
&lt;P&gt;FinOps toolkit office hours make that possible. Join us every other Wednesday, from 8:30 to 9:00 AM Pacific (4:30 to 5:00 PM UTC), drop in to get help with deployment issues, discuss feature requests, share feedback, or connect with others on the same journey. No agenda, no preparation required. All experience levels welcome.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/officehours" target="_blank" rel="noopener"&gt;Join the next session&lt;/A&gt; or &lt;A href="https://github.com/microsoft/finops-toolkit/releases/latest/download/office-hours.ics" target="_blank" rel="noopener"&gt;add it to your calendar&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Scaling FinOps hubs to meet enterprise demands&lt;/H1&gt;
&lt;P&gt;As FinOps hubs adoption grows, so do the demands placed on it. Organizations need deployments that satisfy compliance policies, recover gracefully from failures, and adapt to evolving requirements. This month, you’ll find improvements touching all three.&lt;/P&gt;
&lt;P&gt;Compliance requirements vary widely across organizations. Some Azure Landing Zone policies require Key Vault purge protection but enabling it by default creates friction during development and testing when frequent redeployments are the norm. A new optional &lt;STRONG&gt;enablePurgeProtection&lt;/STRONG&gt; parameter lets you enable purge protection when policies require it while keeping it off by default for flexibility elsewhere. This release also tightens the default security posture by replacing the User Access Administrator role with the more restrictive RBAC Administrator role, now scoped specifically to the Managed Exports app. (I’ll touch on apps in a second…)&lt;/P&gt;
&lt;P&gt;Reliability was a big focus in this release. You’ll see improvements that address pipeline issues that could cause deployment failures or data inconsistencies, including ADF triggers not starting after deployment, InitializeHub pipeline failures, and duplicate records in certain scenarios. We’re always looking out for reliability and data quality issues, so please let us know if you run into any problems.&lt;/P&gt;
&lt;P&gt;Extensibility has always been at the heart of FinOps hubs – it’s one of our defining design principles. But there’s a lot to extensibility and the underlying architecture needed to catch up. This release reorganizes the Bicep templates into separate application modules, laying the groundwork for more flexible deployment options in future releases. The vision: deploy only the components you need, extend with your own, and integrate more seamlessly with existing infrastructure. You’ll hear more as we evolve this extensibility model. I’m incredibly excited about the potential here.&lt;/P&gt;
&lt;P&gt;Have an extension you’d like to see? &lt;A href="https://aka.ms/ftk/discuss?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Start a discussion&lt;/A&gt; and explore it with the community. We’d love to hear from you!&lt;/P&gt;
&lt;H1&gt;Streamline export automation with Parquet&lt;/H1&gt;
&lt;P&gt;Cost Management exports can grow large, especially for organizations with complex environments or long retention periods. CSV files get the job done, but they are verbose and slow to query at scale. We always recommend using parquet exports with snappy compression for the fastest downloads and ingestion times. Now you can use PowerShell to export your data using parquet.&lt;/P&gt;
&lt;P&gt;For those who aren’t aware, the FinOps toolkit includes a PowerShell module with several useful commands, like creating and executing Cost Management exports. The &lt;A href="https://learn.microsoft.com/azure/cost-management-billing/finops/toolkit/powershell/cost/new-finopscostexport?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;New-FinOpsCostExport&lt;/A&gt; command is key here and now supports Parquet format through a new &lt;STRONG&gt;-Format&lt;/STRONG&gt; parameter. Parquet files are columnar, compact, and significantly faster to query in tools like Azure Data Explorer, Synapse, and Fabric. You’ll also see a new &lt;STRONG&gt;-CompressionMode&lt;/STRONG&gt; parameter which gives you control over gzip and snappy compression to further reduce storage costs and transfer times. Again, for the fastest data processing and lowest latency, we recommend using Parquet format with snappy compression.&lt;/P&gt;
&lt;P&gt;Thanks to &lt;A href="https://github.com/gorkomikus" target="_blank" rel="noopener"&gt;gorkomikus&lt;/A&gt; on GitHub for contributing this feature! They saw a gap and fixed it. That’s what community is all about!&lt;/P&gt;
&lt;H1&gt;Other new and noteworthy updates&lt;/H1&gt;
&lt;P&gt;Many small improvements and bug fixes go into each release, so covering everything in detail can be a lot to take in. But I do want to call out a few other small things that you may be interested in.&lt;/P&gt;
&lt;P&gt;In&amp;nbsp;&lt;A href="https://aka.ms/ftk/pbi?https://learn.microsoft.com/azure/cost-management-billing/finops/toolkit/powershell/cost/new-finopscostexport?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Power BI reports&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fixed tag expansion when tag names contain special characters like colons.&lt;/LI&gt;
&lt;LI&gt;Fixed unattached disks count in the workload optimization report to show only truly unattached disks.&lt;/LI&gt;
&lt;LI&gt;Fixed "Number of Months" parameter calculation that was excluding the first 5 days of data.&lt;/LI&gt;
&lt;LI&gt;Fixed EA department scope failing on pricesheet export by skipping unsupported scopes.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A href="https://aka.ms/finops/workbooks?https://learn.microsoft.com/azure/cost-management-billing/finops/toolkit/powershell/cost/new-finopscostexport?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;FinOps workbooks&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fixed SQL Managed Instance vCores displaying incorrect values in the AHB workbook.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In&amp;nbsp;&lt;A href="https://aka.ms/ftk/aoe?https://learn.microsoft.com/azure/cost-management-billing/finops/toolkit/powershell/cost/new-finopscostexport?WT.mc_id=finops-260210-micflan" target="_blank" rel="noopener"&gt;Azure optimization engine&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Changed default SQL database backup redundancy to LRS for improved cost efficiency and compatibility with non-paired Azure regions.&lt;/LI&gt;
&lt;LI&gt;Fixed reservations-related workbooks by replacing Instance Size Flexibility ratios CSV vanity URL.&lt;/LI&gt;
&lt;LI&gt;Fixed underutilized disks recommendations not being generated for Premium SSD V2 disks.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;What’s next&lt;/H1&gt;
&lt;P&gt;We’ve been a bit quiet lately, but we’re still here and excited about what the future has in store. It’s been interesting to see how the silence has caused an increase in people looking to contribute to the FinOps toolkit. This is very exciting to watch this vibrant community continue to grow!&lt;/P&gt;
&lt;P&gt;Looking ahead, you can expect continued innovation across the toolkit:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;AI automation on top of Cost Management and FinOps hubs giving you more options to getting the answers you need.&lt;/LI&gt;
&lt;LI&gt;FinOps hubs will add recommendations, a new extensibility model, and continued data quality improvements.&lt;/LI&gt;
&lt;LI&gt;Azure Optimization Engine will evolve as its capabilities are integrated into FinOps hubs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To support this momentum, I’m also working on a set of premium, paid services designed to help organizations deploy, customize, and scale the FinOps toolkit with confidence. Whether you need help getting started, tailoring the tools to your environment, or ensuring long-term success, these services are built to meet you where you are – strategic, secure, and ready to deliver value from day one. Connect with me directly on &lt;A href="https://linkedin.com/in/flanakin" target="_blank" rel="noopener"&gt;LinkedIn&lt;/A&gt; or &lt;A class="lia-external-url" href="https://www.finops.org/community/" target="_blank"&gt;FinOps Foundation Slack&lt;/A&gt; to learn more.&lt;/P&gt;</description>
      <pubDate>Mon, 09 Feb 2026 09:21:43 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/what-s-new-in-finops-toolkit-13-january-2026/ba-p/4493090</guid>
      <dc:creator>Michael_Flanakin</dc:creator>
      <dc:date>2026-02-09T09:21:43Z</dc:date>
    </item>
    <item>
      <title>Microsoft Agent Pre-Purchase Plan: One Unified Path to Scale AI Agents</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/microsoft-agent-pre-purchase-plan-one-unified-path-to-scale-ai/ba-p/4476052</link>
      <description>&lt;P&gt;AI is now essential, and at Microsoft Ignite 2025, we introduced a&lt;A href="https://blogs.microsoft.com/blog/2025/11/18/from-idea-to-deployment-the-complete-lifecycle-of-ai-on-display-at-ignite-2025/" target="_blank" rel="noopener"&gt; new foundation for intelligent agents: &lt;STRONG&gt;Work IQ, Fabric IQ, and Foundry IQ&lt;/STRONG&gt;.&lt;/A&gt; These three IQs represent the intelligence layer that gives agents deep context; understanding how people work, connecting to enterprise data, and orchestrating knowledge across platforms. Together with the launch of &lt;A href="https://aka.ms/Microsoft-Agent-Factory-Blog" target="_blank" rel="noopener"&gt;Microsoft Agent Factory&lt;/A&gt;, organizations now have a unified program to build, deploy, and manage agents powered by these IQs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="https://aka.ms/Microsoft-Agent-P3-Docs" target="_blank" rel="noopener"&gt;Microsoft Agent Pre-Purchase Plan (P3)&lt;/A&gt;&lt;/STRONG&gt; is designed to for organizations looking to confidently invest in AI agent development with a single, predictable budget. It empowers businesses to experiment, build, and scale sophisticated AI agents without the friction of fragmented licensing or unexpected costs. By unifying access to agentic services across Microsoft Foundry, Microsoft Copilot Studio*, Microsoft Fabric, and GitHub, Microsoft Agent P3 empowers organizations to harness the full potential of the IQ layer thus removing barriers and unlocking the value of truly intelligent, context-driven agents.&lt;/P&gt;
&lt;H1&gt;What is Microsoft Agent Pre-Purchase Plan and how to does it work?&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;Microsoft Agent P3 is a one-year pay-upfront option.&lt;/LI&gt;
&lt;LI&gt;Customers commit upfront to a lump-sum pool of Agent Commit Units (ACU) that can be used at any time during the one-year term.&lt;/LI&gt;
&lt;LI&gt;Every time you consume eligible services across Microsoft Foundry, Microsoft Copilot Studio*, Microsoft Fabric, and GitHub, the ACUs are automatically drawn down from your P3 balance.&lt;/LI&gt;
&lt;LI&gt;If you use up your balance before the year ends, you can&amp;nbsp;add another P3 plan&amp;nbsp;or switch to&amp;nbsp;pay-as-you-go.&lt;/LI&gt;
&lt;LI&gt;If you don’t use all your credits by the end of the year, the remaining balance&amp;nbsp;expires.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Pricing*&lt;/H1&gt;
&lt;img&gt;
&lt;P&gt;*Pricing as of November 2025, subject to change.&lt;/P&gt;
&lt;P&gt;**Example if Microsoft Copilot Studio generates a retail cost of $100 based on Copilot Credit and Microsoft Foundry usage, then 100 Agent CUs (ACUs) are consumed.&lt;/P&gt;
&lt;/img&gt;
&lt;H1&gt;What is covered by the Microsoft Agent Pre-Purchase Plan?&lt;/H1&gt;
&lt;img&gt;
&lt;P&gt;* List as of February 2026, subject to change&lt;/P&gt;
&lt;P&gt;** Currently in Private Preview&lt;/P&gt;
&lt;P&gt;*** Covers Copilot Credits enabled agentic services: Microsoft Copilot Studio, Dynamics 365 first-party agents, and Copilot. Microsoft reserves the right to update Copilot Credit eligible products.&lt;/P&gt;
&lt;/img&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Customer Example&lt;/H1&gt;
&lt;P&gt;Suppose a customer expects to consume 1,500,000 Copilot Credit with custom agents created in Microsoft Copilot Studio. Assuming the pay-as-you-go rate for Copilot Credit to be $0.01, then at the pay-as-you-go rate, this will cost $15,000.&lt;/P&gt;
&lt;P&gt;In addition, if they are using 5000 &lt;A href="https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/provisioned-throughput?context=%2Fazure%2Fai-foundry%2Fcontext%2Fcontext&amp;amp;view=foundry-classic&amp;amp;tabs=global-ptum" target="_blank" rel="noopener"&gt;Microsoft Foundry Provisioned Throughput Units (PTU)&lt;/A&gt; and assuming the pay-as-you-go rate for PTU to be $1, then at the pay-as-you-go rate, this will cost $5,000.&lt;/P&gt;
&lt;P&gt;By purchasing Tier 1 (20,000 ACUs) Microsoft Agent P3 at the cost of $19,000, it will give a 5% saving compared to the pay-as-you-go rate for the same usage.&lt;/P&gt;
&lt;H1&gt;How to purchase a Microsoft Agent Pre-Purchase Plan?&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;Sign in to the&amp;nbsp;Azure portal&amp;nbsp;→Reservations&amp;nbsp;→&amp;nbsp;+ Add&amp;nbsp;→&amp;nbsp;Microsoft Agent Pre-Purchase Plan.&lt;/LI&gt;
&lt;LI&gt;Select your&amp;nbsp;subscription&amp;nbsp;and&amp;nbsp;scope&lt;/LI&gt;
&lt;LI&gt;Choose your&amp;nbsp;tier&amp;nbsp;and complete payment.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both"&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;What sets Microsoft Agent Pre-Purchase Plan apart?&lt;/H1&gt;
&lt;P&gt;At the heart of Microsoft Agent Pre-Purchase Plan are four pillars that redefine how organizations consume AI services:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;One Plan: &lt;/STRONG&gt;A single offer that spans Microsoft Foundry, Microsoft Copilot Studio*, Microsoft Fabric, and GitHub. No more siloed credits or SKU-level complexity, just one pool for all your AI workloads.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Breadth of Services: &lt;/STRONG&gt;Access to 30+ services, from Azure AI Search and Cognitive Services to orchestration tools and Copilot-enabled experiences.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;One Governance Path: &lt;/STRONG&gt;Simplifies procurement and budget management. Procurement teams gain visibility and control without sacrificing agility.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Predictable Savings: &lt;/STRONG&gt;Get discounts and avoid surprises when you choose this plan.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H1&gt;Conclusion&lt;/H1&gt;
&lt;P&gt;The Microsoft Agent Pre-Purchase Plan is designed to make your AI journey simpler, smarter, and more cost-effective. By combining the strengths of Microsoft Foundry, Microsoft Copilot Studio*, Microsoft Fabric, and GitHub into a single, unified offer, the plan eliminates the need to choose one platform or manage multiple contracts. Organizations benefit from predictable budgeting, streamlined procurement, and the flexibility to innovate across more than 30+ agentic services—all with one pool of funds.&lt;/P&gt;
&lt;P&gt;Whether you’re just starting with AI or scaling enterprise-wide adoption, the Microsoft Agent Pre-Purchase Plan empowers you to unlock the full value of Microsoft’s agentic platform—driving innovation, efficiency, and business impact. And with support for agents built on Work IQ, Fabric IQ, and Foundry IQ, customers can be confident their solutions are grounded in the latest intelligence announced at Ignite.&lt;/P&gt;
&lt;H1&gt;What’s next&lt;/H1&gt;
&lt;P&gt;Read the &lt;A href="https://aka.ms/Microsoft-Agent-P3-Docs" target="_blank" rel="noopener"&gt;Microsoft Agent P3 Offer MS Learn Doc&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://portal.azure.com/#view/Microsoft_Azure_Reservations/CreateBlade/referrer/Browse_AddCommand/autoOpenSpecPicker~/false/productType/Reservation" target="_blank" rel="noopener"&gt;Purchase Microsoft Agent P3&lt;/A&gt; in your Azure Portal&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;* Covers Copilot Credits enabled agentic services: Microsoft Copilot Studio, Dynamics 365 first-party agents, and Copilot. Microsoft reserves the right to update Copilot Credit eligible products&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 20 Feb 2026 18:06:20 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/microsoft-agent-pre-purchase-plan-one-unified-path-to-scale-ai/ba-p/4476052</guid>
      <dc:creator>kyleikeda</dc:creator>
      <dc:date>2026-02-20T18:06:20Z</dc:date>
    </item>
    <item>
      <title>Streamline Analytics Spend on Microsoft Fabric with Azure Reservations</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/streamline-analytics-spend-on-microsoft-fabric-with-azure/ba-p/4472670</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Introduction &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As organizations accelerate their cloud adoption, optimizing spend while maintaining performance and scalability is a top priority. Microsoft Fabric, our all-in-one, software-as-a-service data platform, is designed to help teams accomplish any data project. But how can you ensure your investment delivers maximum value? In this post, we’ll explore how &lt;STRONG&gt;Azure reservations for Microsoft Fabric&lt;/STRONG&gt; can help you optimize costs, simplify purchasing, and streamline your data analytics spend.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What Is Microsoft Fabric?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/fabric/fundamentals/microsoft-fabric-overview" target="_blank"&gt;Microsoft Fabric&lt;/A&gt; is an end-to-end data platform that brings together data orchestration, transformation, machine learning, real-time event processing, reporting, and databases in a single SaaS experience. It’s designed for data engineers, scientists, analysts, and business users, offering role-specific workloads and integrated AI experiences, all backed by a unified data lake—OneLake.&lt;/P&gt;
&lt;P&gt;Unlike traditional services that require managing different pricing and capacities for each workload, Fabric simplifies this with a single capacity model. You purchase Fabric Capacity Units (CUs), which power all workloads, and jobs consume CUs at different rates depending on your compute needs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How Azure reservations Work with Fabric&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://azure.microsoft.com/en-us/pricing/offers/reservations/" target="_blank"&gt;Azure reservation&lt;/A&gt; is a pricing model that helps you save when you commit to a specific resource, region, and term - ideal for stable, predictable workloads. Reservations don’t affect capacity or runtime; they simply provide discount benefits. Azure analyzes your usage and recommends reservation options, and tools like &lt;A class="lia-external-url" href="https://azure.microsoft.com/en-us/products/advisor/" target="_blank"&gt;Azure Advisor&lt;/A&gt; guide you toward the right purchase.&lt;/P&gt;
&lt;P&gt;You may be familiar with how reservations work with virtual machines, but Azure reservations can also &lt;A class="lia-external-url" href="https://azure.microsoft.com/en-us/pricing/offers/reservations/#eligibility" target="_blank"&gt;apply to other services&lt;/A&gt; such as Microsoft Fabric. When purchasing Fabric, you can choose a pay-as-you-go model for flexible usage or save substantially with Azure reservations for consistent workloads. For example, if you deploy an F64 SKU in Fabric for ongoing reporting and analytics, buying an Azure reservation for this SKU ensures you pay the discounted rate for your consistent usage.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to Purchase a Reservation for Microsoft Fabric&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Let’s look at how you can purchase a reservation for Microsoft Fabric. Follow these steps below or watch this video:&amp;nbsp;&lt;/P&gt;
&lt;div data-video-id="https://youtu.be/B7TUkcCDTOg?si=HVEoCXESgPYh-dmR/1764010974252" data-video-remote-vid="https://youtu.be/B7TUkcCDTOg?si=HVEoCXESgPYh-dmR/1764010974252" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FB7TUkcCDTOg%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DB7TUkcCDTOg&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FB7TUkcCDTOg%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;P&gt;&lt;STRONG&gt;1. Start in the Microsoft Marketplace or Azure Portal:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Visit the&amp;nbsp;&lt;A class="lia-external-url" href="https://marketplace.microsoft.com/" target="_blank"&gt;Microsoft Marketplace&lt;/A&gt; and look up &lt;A class="lia-external-url" href="https://marketplace.microsoft.com/en-us/product/AzureServices/Microsoft.Fabric" target="_blank"&gt;Microsoft Fabric.&lt;/A&gt; Click “Get it now” and it will take you to the &lt;A class="lia-external-url" href="https://portal.azure.com/" target="_blank"&gt;Azure Portal&lt;/A&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;2. Create Fabric Capacity:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Select Configuration:&lt;/STRONG&gt; In Azure Portal, on the Create Fabric Capacity page, select your subscription and resource group, name your capacity, and select your region.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Select Size:&lt;/STRONG&gt; Use the &lt;A class="lia-external-url" href="https://estimator.fabric.microsoft.com/" target="_blank"&gt;Fabric SKU estimator&lt;/A&gt; to determine the right capacity for your workloads, or start with a &lt;A class="lia-external-url" href="https://aka.ms/try-fabric" target="_blank"&gt;free trial&lt;/A&gt; and monitor usage with the capacity metrics app. You can always upgrade or create multiple capacities as needed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Organize with Tags:&lt;/STRONG&gt; Use Azure tags to track costs and automate management across environments.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;3. Buy Fabric Reservations:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;In the Azure portal, search for and select “Reservations.”&lt;/LI&gt;
&lt;LI&gt;On the Reservations page, click “Add” and select Microsoft Fabric. Choose your scope and subscription, select Fabric Capacity with upfront or monthly payments, and adjust the quantity as needed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Best Practices for Maximizing Savings&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;To get the most value from your reservations, follow these best practices:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Estimate Carefully: &lt;/STRONG&gt;Avoid over-committing (which leads to wasted resources) or under-committing (which leads to higher costs). Understand your resource needs and usage and use Azure Advisor recommendations to make informed decisions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Enable Auto-Renew: &lt;/STRONG&gt;Ensure your reservations automatically renew so you don’t lose the discount but adjust your reservation needs as workloads change.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Monitor Usage: &lt;/STRONG&gt;Use &lt;A class="lia-external-url" href="https://azure.microsoft.com/en-us/products/cost-management/" target="_blank"&gt;Azure Cost Management&lt;/A&gt; to continuously track reservation usage.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Choose the Right Scope: &lt;/STRONG&gt;Align reservation benefits with your organizational structure to maximize savings.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Conclusion:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Microsoft Fabric and Azure reservations empower organizations to streamline analytics spend, simplify purchasing, and unlock significant savings without sacrificing performance or scalability. Following best practices and leveraging the right tools ensures your cloud investments deliver maximum value.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Get started&lt;/STRONG&gt; today by visiting the &lt;A class="lia-external-url" href="https://marketplace.microsoft.com/" target="_blank"&gt;Microsoft Marketplace&lt;/A&gt; and &lt;A class="lia-external-url" href="https://portal.azure.com/" target="_blank"&gt;Azure Portal&lt;/A&gt; to purchase Fabric Capacity units and reservations or read &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/cost-management-billing/reservations/fabric-capacity" target="_blank"&gt;Save costs with Microsoft Fabric Capacity reservations - Microsoft Cost Management | Microsoft Learn&lt;/A&gt;&amp;nbsp;to learn more.&lt;/P&gt;</description>
      <pubDate>Mon, 24 Nov 2025 19:13:50 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/streamline-analytics-spend-on-microsoft-fabric-with-azure/ba-p/4472670</guid>
      <dc:creator>kyleikeda</dc:creator>
      <dc:date>2025-11-24T19:13:50Z</dc:date>
    </item>
    <item>
      <title>Smarter Cloud, Smarter Spend: How Azure Powers Cost-Efficient Innovation</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/smarter-cloud-smarter-spend-how-azure-powers-cost-efficient/ba-p/4465687</link>
      <description>&lt;P&gt;In today’s dynamic business environment, organizations are under pressure to innovate rapidly while managing costs effectively. The cloud, especially with AI at the forefront, is driving transformation across industries. But with rising cloud spend and economic uncertainty,&amp;nbsp;&lt;STRONG&gt;cost efficiency has become a top priority&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;To help customers navigate this challenge, Microsoft commissioned Forrester Consulting to conduct a &lt;STRONG&gt;&lt;A href="https://aka.ms/TEI-Cost-Efficiency" target="_blank" rel="noopener"&gt;Total Economic Impact™ (TEI) study&lt;/A&gt;.&lt;/STRONG&gt; The study reveals how organizations can unlock significant financial and operational benefits by leveraging &lt;STRONG&gt;Microsoft Azure’s tools and strategic pricing offers&lt;/STRONG&gt;, especially when migrating to the cloud and adopting AI.&lt;/P&gt;
&lt;H2&gt;Cloud Migration: Accelerating Modernization with Azure&lt;/H2&gt;
&lt;P&gt;Migrating to the cloud is a foundational step for digital transformation. But many organizations initially struggled with cost overruns, lack of visibility, and inefficient resource usage. The TEI study shows how Azure’s native tools and strategic pricing offers helped overcome these challenges.&lt;/P&gt;
&lt;H3&gt;Key Enablers of Cost-Efficient Migration:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/offers/hybrid-benefit/" target="_blank" rel="noopener"&gt;Azure Hybrid Benefit&lt;/A&gt;&lt;/STRONG&gt;: Allows organizations to optimize savings in their migration journey by giving a discount on server licenses and subscriptions and granting hosting and outsourcing benefits&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/offers/reservations/" target="_blank" rel="noopener"&gt;Azure reservations&lt;/A&gt;&lt;/STRONG&gt;: A commitment model that enables customers to save on their spend when they commit to a specific resource, in a region, and for a specific term.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/offers/savings-plan-compute/" target="_blank" rel="noopener"&gt;Azure savings plan for compute&lt;/A&gt;&lt;/STRONG&gt;: A flexible pricing model that enables customers to save on their cost when they commit to a spend a fixed hourly amount for a specific term.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/products/cost-management/" target="_blank" rel="noopener"&gt;Microsoft Cost Management&lt;/A&gt; &amp;amp; &lt;A href="https://azure.microsoft.com/en-us/products/advisor/" target="_blank" rel="noopener"&gt;Azure Advisor&lt;/A&gt;&lt;/STRONG&gt;: Provide real-time insights and optimization recommendations.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/calculator" target="_blank" rel="noopener"&gt;Azure Pricing Calculator&lt;/A&gt;&lt;/STRONG&gt;: Accurately estimate migration costs and forecast budgets.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;“Azure reservations and Azure Hybrid Benefit facilitate moving to the cloud. With these offers and better cost management, we are saving 30% to 35%. Managing our costs without these tools would be an unpredictable nightmare.”&lt;/EM&gt;&lt;BR /&gt;— Senior IT Director, Manufacturing&lt;/P&gt;
&lt;H3&gt;Quantified Impact*:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;25% reduction&lt;/STRONG&gt; in cloud spending in Year 1 using Microsoft tools.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;$4.9M&lt;/STRONG&gt; in direct savings over three years from tool-based optimization.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;$3.8M&lt;/STRONG&gt; in additional savings from strategic pricing offers.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;AI Adoption: Driving Innovation with Cost-Efficient Azure Solutions&lt;/H3&gt;
&lt;P&gt;Once migrated, organizations are increasingly turning to AI to drive innovation and competitive advantage. Azure doesn’t just support AI workloads, it makes them &lt;STRONG&gt;more cost-effective and scalable&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H3&gt;Key Enablers of AI Adoption:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/unlock-cost-savings-with-azure-ai-foundry-provisioned-throughput-reservations/4414647" target="_blank" rel="noopener" data-lia-auto-title="Azure AI Foundry Provisioned Throughput reservations" data-lia-auto-title-active="0"&gt;Azure AI Foundry Provisioned Throughput reservations&lt;/A&gt;: &lt;/STRONG&gt;Get cost savings compared to provisioned throughput (PTU) hourly pricing.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/products/cost-management/" target="_blank" rel="noopener"&gt;Microsoft Cost Management&lt;/A&gt; &amp;amp; &lt;A href="https://azure.microsoft.com/en-us/products/advisor/" target="_blank" rel="noopener"&gt;Azure Advisor&lt;/A&gt;&lt;/STRONG&gt;: Help forecast and optimize AI-related cloud spend.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;A href="https://azure.microsoft.com/en-us/pricing/#Estimate-and-budget" target="_blank" rel="noopener"&gt;Strategic Pricing Offers&lt;/A&gt;&lt;/STRONG&gt;: Enable predictable budgeting and reinvestment into AI initiatives.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;“Leveraging Microsoft tools and strategic pricing offers is not only increasing profitability but also putting those savings into more interesting projects like AI with fraud prevention work and the customer experience.”&lt;/EM&gt;&lt;BR /&gt;— VP of Analytics Engineering, Financial Services&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;“Azure reservations for AI projects using PTUs has helped our AI initiatives. It has helped better predict costs.”&lt;/EM&gt;&lt;BR /&gt;— CIO, Healthcare&lt;/P&gt;
&lt;H3&gt;Unquantified Benefits:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Increased cloud insights and visibility.&lt;/LI&gt;
&lt;LI&gt;Improved governance and accountability.&lt;/LI&gt;
&lt;LI&gt;Enhanced productivity (24% by Year 3).&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;The Bottom Line: Unified Transformation with Azure&lt;/H2&gt;
&lt;P&gt;The TEI study concludes that Azure delivers a unified approach to cloud computing, enabling organizations to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Migrate to the cloud efficiently with cost control&lt;/LI&gt;
&lt;LI&gt;Adopt AI rapidly by reinvesting savings into innovation&lt;/LI&gt;
&lt;LI&gt;Achieve a &lt;STRONG&gt;net present value (NPV) of $8.7 million&lt;/STRONG&gt; over three years&lt;/LI&gt;
&lt;LI&gt;Realize a &lt;STRONG&gt;35% reduction in cloud spending&lt;/STRONG&gt; in Year 1&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;“With Microsoft tools, we can focus on higher value projects. Instead of reviewing reports and conducting cost audits, we can build new tools and build with genAI. We can innovate faster.”&lt;/EM&gt;&lt;BR /&gt;— Vice President of Analytics Engineering, Financial Services&lt;/P&gt;
&lt;H2&gt;Ready to Dive Deeper?&lt;/H2&gt;
&lt;P&gt;This blog is just the beginning. The full Forrester TEI study is packed with insights, customer stories, and financial modeling to help you build your business case for Azure.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/TEI-Cost-Efficiency" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;Read the full study here&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;*&lt;EM&gt;To understand benefits, costs, and risks, Forrester interviewed eight decision-makers with experience using the evaluated Azure solutions. For the purposes of this study, Forrester aggregated the results from these decision-makers into a single composite organization.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2025 17:05:07 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/smarter-cloud-smarter-spend-how-azure-powers-cost-efficient/ba-p/4465687</guid>
      <dc:creator>kyleikeda</dc:creator>
      <dc:date>2025-10-30T17:05:07Z</dc:date>
    </item>
    <item>
      <title>Unlock Savings with Copilot Credit Pre-Purchase Plan</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/unlock-savings-with-copilot-credit-pre-purchase-plan/ba-p/4464511</link>
      <description>&lt;H2&gt;Introduction&lt;/H2&gt;
&lt;P&gt;As organizations scale their use of Microsoft Copilot Studio from building custom agents to integrating with Dynamics 365, cost predictability and optimization becomes critical. To help you plan confidently and save more, we’re introducing &lt;STRONG&gt;Copilot Credit Pre-Purchase Plan (P3)*&lt;/STRONG&gt;,&lt;STRONG&gt; &lt;/STRONG&gt;a simple, one‑year plan that delivers volume discounts and automatic billing, so your team can focus on outcomes, not invoices.&lt;/P&gt;
&lt;H2&gt;What is Copilot Credit Pre-Purchase Plan?&lt;/H2&gt;
&lt;P&gt;The P3 is a &lt;STRONG&gt;one‑year, pay‑up‑front option&lt;/STRONG&gt; for Copilot Credits. You purchase &lt;STRONG&gt;Copilot Credit Commit Units (CCCU)&lt;/STRONG&gt; and your usage automatically draws from this pool. Higher tiers unlock &lt;STRONG&gt;progressive discounts&lt;/STRONG&gt; enabling more growth. &lt;A href="https://go.microsoft.com/fwlink/?linkid=2320995" target="_blank"&gt;See pricing here&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;How it works&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;You &lt;STRONG&gt;pre-purchase a pool of Copilot Credits Commit Unit&lt;/STRONG&gt; (CCCUs) for one year.&lt;/LI&gt;
&lt;LI&gt;Every time you use Copilot Credits for Microsoft Copilot Studio, Dynamics 365 first-party agents, or Copilot Chat*, the CCCUs are &lt;STRONG&gt;automatically drawn down&lt;/STRONG&gt; from your P3 balance.&lt;/LI&gt;
&lt;LI&gt;If you use up your balance before the year ends, you can &lt;STRONG&gt;add another P3 plan&lt;/STRONG&gt; or switch to &lt;STRONG&gt;pay-as-you-go&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;If you don’t use all your credits by the end of the year, the remaining balance &lt;STRONG&gt;expires&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Example:&lt;/H2&gt;
&lt;P&gt;A retail company runs 15 custom Copilot Studio agents to handle inventory checks, store operations, and customer service. They expect seasonal spike (holiday campaigns, back-to-school, and clearance events) but want predictable costs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Without P3:&lt;/STRONG&gt;&lt;BR /&gt;On the &lt;STRONG&gt;pay-as-you-go&lt;/STRONG&gt; model their total cost can vary and spike as their usage goes up and down. During peak months, usage surges, and so does the bill make budgeting tough.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;With P3:&lt;/STRONG&gt;&lt;BR /&gt;Based on forecasting they expect to use &lt;STRONG&gt;1,500,000 Copilot Credits&lt;/STRONG&gt; over 12 months. Because they know how many Copilot Credits they plan on consuming, the retail company buys &lt;STRONG&gt;P3&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Purchase P3 Tier 2: 15,000 CCCUs (this covers 1,500,000 Copilot Credits)&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;P3 Upfront cost:&lt;/STRONG&gt; $14,100&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;P3 discount:&lt;/STRONG&gt; 6% vs PAYG&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Now, every time their agents run, CCCUs are&amp;nbsp;&lt;STRONG&gt;automatically deducted from the P3 balance&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;P3 Tiers:&lt;/STRONG&gt;&lt;/P&gt;
&lt;img&gt;
&lt;P&gt;Pricing as of October 2025, subject to change. &lt;A href="https://go.microsoft.com/fwlink/?linkid=2320995" target="_blank"&gt;See pricing here.&lt;/A&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;H2&gt;&amp;nbsp;&lt;/H2&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Key Benefits&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost savings&lt;/STRONG&gt;: Up to 20% discount at highest tier**.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Budget predictability&lt;/STRONG&gt;: One‑year term with upfront payment and no surprise bills.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Flexibility&lt;/STRONG&gt;: Add more P3 anytime; works alongside capacity packs and PAYG.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No redeployment&lt;/STRONG&gt;: Applies automatically to eligible usage.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Defined Scope&lt;/STRONG&gt;: Decide where the P3 applies based on your business needs. It can be applied at the resource group, subscription, management group, or shared level.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;How to Purchase Copilot Studio Pre-purchase plan&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;Sign in to the &lt;STRONG&gt;Azure portal&lt;/STRONG&gt; → &lt;STRONG&gt;Reservations&lt;/STRONG&gt; → &lt;STRONG&gt;+ Add&lt;/STRONG&gt; → &lt;STRONG&gt;Copilot Credit Pre‑purchase Plan&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Select your &lt;STRONG&gt;subscription&lt;/STRONG&gt; and &lt;STRONG&gt;scope&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Choose your &lt;STRONG&gt;tier&lt;/STRONG&gt; and complete payment.&lt;/LI&gt;
&lt;LI&gt;Link your subscription to Copilot Studio in &lt;STRONG&gt;Power Platform Admin Center&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Best Practices&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Estimate accurately&lt;/STRONG&gt;: Use historical usage or &lt;A href="https://microsoft.github.io/copilot-studio-estimator/" target="_blank"&gt;Copilot consumption estimator.&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploy first&lt;/STRONG&gt;: Ensure environments are PAYG‑enabled before buying.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Monitor utilization&lt;/STRONG&gt;: Set alerts to avoid unexpected PAYG charges.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Plan for renewal&lt;/STRONG&gt;: Auto‑renew is on by default; adjust as needed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;If you’re scaling fast or managing multiple environments, P3 gives you &lt;STRONG&gt;predictable costs and meaningful savings&lt;/STRONG&gt; without sacrificing flexibility. It’s ideal for customers with &lt;STRONG&gt;variable or growing usage&lt;/STRONG&gt; who want to optimize spend and simplify billing.&lt;/P&gt;
&lt;P&gt;Copilot Credit Pre-Purchase Plan makes it easier to innovate without worrying about unpredictable costs. By committing upfront, you unlock discounts, streamline billing, and gain confidence in your budget.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Ready to start?&lt;/STRONG&gt;&lt;BR /&gt;Visit the &lt;A href="https://portal.azure.com/" target="_blank"&gt;Azure portal&lt;/A&gt; to purchase your plan today or read the &lt;A href="https://aka.ms/copilotP3" target="_blank"&gt;Copilot Credits Pre-purchase Plans documents&lt;/A&gt; to learn more.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;STRONG&gt;Resources:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://aka.ms/P3Blog" target="_blank"&gt;Read how to confidently scale AI agent deployments with Copilot Studio&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://www.microsoft.com/en-us/microsoft-365-copilot/microsoft-copilot-studio" target="_blank"&gt;Learn more about Microsoft Copilot Studio&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://go.microsoft.com/fwlink/?linkid=2320995" target="_blank"&gt;See Microsoft Copilot Studio Licensing Guide&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;*Copilot Credit covers Microsoft Copilot Studio, Dynamics 365 first-party agents, and Copilot Chat. Microsoft reserves the right to update Copilot Credit eligible products.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;**&lt;/EM&gt; &lt;EM&gt;The actual realized cost per Copilot Credit for P3 and the MCS license will &lt;/EM&gt;&lt;EM style="color: rgb(30, 30, 30);"&gt;depend on the utilization rate. As such customers should take into account their&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;expected usage pattern as P3 Commit Units expire annually while the Copilot &lt;/EM&gt;&lt;EM style="color: rgb(30, 30, 30);"&gt;Credit capacity packs expire monthly.&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 27 Oct 2025 21:53:23 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/unlock-savings-with-copilot-credit-pre-purchase-plan/ba-p/4464511</guid>
      <dc:creator>kyleikeda</dc:creator>
      <dc:date>2025-10-27T21:53:23Z</dc:date>
    </item>
    <item>
      <title>Provider-Managed Azure Subscriptions: Cost Control and Commitment Clarity</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/provider-managed-azure-subscriptions-cost-control-and-commitment/ba-p/4448688</link>
      <description>&lt;P&gt;As a Microsoft Cloud Solution Architect supporting enterprise customers, I occasionally encounter a specific scenario where customers with an Enterprise Agreement (EA) or Microsoft Customer Agreement (MCA-E) allow a service provider (SP) to manage one or more of their Azure subscriptions via the SP’s tenant. This setup has notable implications for cost and commitment management, which I’ll explore in this article.&lt;/P&gt;
&lt;P&gt;Recommended prerequisite reading: &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/microsoft-cost-management-billing--trust-relationships-explained/4392496" target="_blank" rel="noopener"&gt;Microsoft Cost Management: Billing &amp;amp; Trust Relationships Explained&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Scenario Overview&lt;/H1&gt;
&lt;P&gt;A customer signs a contract with a service provider to outsource the management of certain resources. The customer retains full control over resource pricing and expects the usage of these resources to contribute towards their Microsoft Azure Consumption Commitment (MACC).&lt;/P&gt;
&lt;P&gt;To achieve this, the customer associates one or more Azure subscriptions with a Microsoft Entra ID tenant owned and managed by the SP. In our example, this is “Subscription B.” The SP gains full RBAC access to the subscription and its resources, while the billing relationship remains tied to the customer’s billing account (EA) or billing profile (MCA-E).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Let’s have a look at the implications from both the customers and the service providers perspective:&lt;/P&gt;
&lt;H2&gt;Customers perspective&lt;/H2&gt;
&lt;H3&gt;Cost &amp;amp; Pricing&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;All cost in Subscription B that occurs because of resource usage are tied and therefore billed to the customers billing account (EA) or billing profile (MCA-E).&lt;/LI&gt;
&lt;LI&gt;The prices used for the usage are based on the negotiated customer price list associated with the billing account (EA) /profile (MCA-E).&lt;/LI&gt;
&lt;LI&gt;The Azure resource consumption of Subscription B plus any eligible Marketplace offer consumption within the subscription contributes to the MACC of the customer.&lt;/LI&gt;
&lt;LI&gt;Customer has full cost visibility of Subscription B via Azure Cost Analysis on the billing account/billing profile level.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Commitments (Reservations / Savings Plans)&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Shared commitments at the billing account/billing profile level are utilized by matching resources in Subscription B.&lt;/LI&gt;
&lt;LI&gt;Commitments scoped to Subscription B or lower can only be purchased by the customer, if the customer has RBAC rights on the subscription and the global billing policy allows purchases for subscription owner / reservation purchasers.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Service Provider Perspective&lt;/H2&gt;
&lt;H3&gt;Cost &amp;amp; Pricing&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;The service provider is responsible for managing Subscription B’s resources and the associated costs.&lt;/LI&gt;
&lt;LI&gt;Subscription B’s actual and amortized cost view is limited for the service provider as they have only access at the subscription level.&lt;/LI&gt;
&lt;LI&gt;The service provider has no direct access to the customer price (Price Sheet) or invoice information.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Commitments (Reservations / Savings Plans)&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;The service provider can purchase commitments scoped at Subscription B or lower (resource group) if the global customer’s billing policy allows purchases for subscription owners / reservation purchasers. The associated costs of the commitment are attributed to the customer’s billing account/profile.&lt;/LI&gt;
&lt;LI&gt;Shared or management group scoped commitments purchased by the service provider based on their own billing account / billing profile do not apply to Subscription B.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H1&gt;Key take aways&lt;/H1&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Decoupled Ownership&lt;/STRONG&gt;: Customers can separate subscription management from billing ownership, enabling flexible operational models.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost Control&lt;/STRONG&gt;: Customers retain full visibility and control over pricing, cost allocation, and commitment utilisation—even when subscriptions are managed by a service provider.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Governance and Policy Alignment&lt;/STRONG&gt;: Successful implementation depends on clear billing policies and RBAC configurations that align with both customer and provider responsibilities.&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Fri, 29 Aug 2025 04:48:21 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/provider-managed-azure-subscriptions-cost-control-and-commitment/ba-p/4448688</guid>
      <dc:creator>Dirk_Brinkmann</dc:creator>
      <dc:date>2025-08-29T04:48:21Z</dc:date>
    </item>
    <item>
      <title>What’s new in FinOps toolkit 12 – July 2025</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/what-s-new-in-finops-toolkit-12-july-2025/ba-p/4438562</link>
      <description>&lt;P&gt;Whether you consider yourself a FinOps practitioner, someone who’s enthusiastic about driving cloud efficiency and maximizing the value you get from the cloud or were just asked to look at ways to reduce cost, the FinOps toolkit has something for you. This month, you’ll find support for FOCUS 1.2, autostart in FinOps hubs which can reduce your hub costs, a new page in the Cost summary Power BI report, and various small fixes, improvements, and documentation updates across the board. Read on for details.&lt;/P&gt;
&lt;H1&gt;New to the FinOps toolkit?&lt;/H1&gt;
&lt;P&gt;In case you haven’t heard, the FinOps toolkit is an open-source collection of tools and resources that help you learn, adopt, and implement FinOps in the Microsoft Cloud. The foundation of the toolkit is the &lt;A href="http://aka.ms/finops/guide" target="_blank" rel="noopener"&gt;Implementing FinOps guide&lt;/A&gt; that helps you get started with FinOps whether you’re using native tools in the Azure portal, looking for ways to automate and extend those tools, or if you’re looking to build your own FinOps tools and reports. To learn more about the toolkit, how to provide feedback, or how to contribute, see&amp;nbsp;&lt;A href="https://aka.ms/ftk/docs?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit documentation&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;FinOps Open Cost and Usage Specification (FOCUS) version 1.2&lt;/H1&gt;
&lt;P&gt;As you may have seen, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/focus-1-2-in-microsoft-cost-management-unified-multi-cloud-multi-currency-report/4423852" target="_blank" rel="noopener"&gt;Microsoft Cost Management released support for FOCUS 1.2&lt;/A&gt; last month. This month, you’ll find updated FOCUS documentation, Power BI reports, FinOps hubs data ingestion, and a new FOCUS 1.2 metadata file.&lt;/P&gt;
&lt;P&gt;The FOCUS documentation provides a high-level overview and summary of what FOCUS is, why it’s important, how to transition to it, and any conformance gaps between the Cost Management dataset and the official specification. These updates cover:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;New columns, like ServiceSubcategory.&lt;/LI&gt;
&lt;LI&gt;Renamed columns, like InvoiceId, PricingCurrency, and SkuMeter.&lt;/LI&gt;
&lt;LI&gt;Future columns that are not yet populated, like CapacityReservationId, CapacityReservationStatus, CommitmentDiscountQuantity, CommitmentDiscountUnit, and SkuPriceDetails.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If you’re migrating reports from native Cost Management schemas to FOCUS, converting your own data, or comparing FOCUS data to native schemas, you can learn more with the following articles:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/cloud-computing/finops/focus/mapping?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Update reports to use FOCUS columns&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/cloud-computing/finops/focus/convert?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Convert cost and usage data to FOCUS&amp;nbsp;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="https://learn.microsoft.com/cloud-computing/finops/focus/validate?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Validate FOCUS data&amp;nbsp;&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Power BI reports were also updated to account for the new and renamed columns. Storage reports include both new and old names with values copied to/from both, so no matter what you use, you’ll continue to get the right values whether you’re using FOCUS 1.0 or FOCUS 1.2 data. This includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;InvoiceId and x_InvoiceId&lt;/LI&gt;
&lt;LI&gt;PricingCurrency and x_PricingCurrency&lt;/LI&gt;
&lt;LI&gt;SkuMeter and x_SkuMeterName&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;KQL reports go a step further and provide some of the additional columns that are not yet provided in Cost Management FOCUS exports. This includes CapacityReservationId, CapacityReservationStatus, CommitmentDiscountQuantity, CommitmentDiscountUnit, SkuPriceDetails, and more. I’ll cover this more in the next section.&lt;/P&gt;
&lt;P&gt;Lastly, FOCUS defines a metadata file that identifies and describes the columns included in a FOCUS dataset. You can download a &lt;A href="https://github.com/microsoft/finops-toolkit/releases/latest/download/dataset-metadata.zip" target="_blank" rel="noopener"&gt;JSON version of these metadata files&lt;/A&gt; or learn more in &lt;A href="https://learn.microsoft.com/cloud-computing/finops/focus/metadata" target="_blank" rel="noopener"&gt;Details about the FOCUS dataset&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Note the documentation updates have not been published yet, so you won’t see them on Microsoft Learn. While Microsoft works on publishing the updates, refer to the &lt;A href="https://github.com/microsoft/finops-toolkit/tree/dev/docs-mslearn/focus" target="_blank" rel="noopener"&gt;FOCUS documentation in the FinOps toolkit repository&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;New FinOps hubs v1_2 schema&lt;/H1&gt;
&lt;P&gt;Data is at the heart of every FinOps practice. Whether you’re a hobbyist or part of a large team, you can’t “FinOps” without data. And when you start to “FinOps” at scale, you realize you need a lot of different data from a lot of different data sources. And these data sources often have different characteristics and change over time. Luckily, FinOps hubs were designed to handle ever-evolving datasets through it’s “schema version” concept.&lt;/P&gt;
&lt;P&gt;FinOps hubs schema versions are contracts you can rely on to always present a consistent version of the data. Today, FinOps hubs use a “v1_0” schema version that aligns with FOCUS 1.0 (hence the name). As of FinOps hubs 12, you will see a new “v1_2” schema version, which aligns with FOCUS 1.2. And you’ll notice that your data is populated in the FOCUS 1.2 format regardless of what dataset version you exported from Cost Management. And the best part is, this optimization won’t impact you at all as long as your reports and integrations are setup to use the versioned functions (e.g., Costs_v1_0). If you find you have code using non-versioned functions (e.g., Costs), simply switch to the versioned function to get all data – old and new – using the previous v1_0 schema version.&lt;/P&gt;
&lt;P&gt;To learn more, see &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/introducing-non-breaking-%E2%80%9Cbreaking%E2%80%9D-changes-in-finops-hubs-12/4438554" target="_blank" rel="noopener"&gt;Introducing non-breaking “breaking” changes in FinOps hubs 12&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Unlocking broader compatibility with flexible CIDR support&lt;/H1&gt;
&lt;P&gt;When setting up private endpoints in FinOps hubs, defining the right virtual network (VNet) configuration is essential to ensure secure and scalable connectivity. A key part of this setup involves specifying a CIDR (Classless Inter-Domain Routing) block, which determines the size and structure of the IP address space within the VNet. Based on community feedback, FinOps hubs expanded CIDR validation to support any subnet size ranging from /8 to /26 for maximum flexibility. &amp;nbsp;(/26 is the minimum required to support native FinOps hubs functionality.)&lt;/P&gt;
&lt;P&gt;This update reflects a more flexible and inclusive approach to network planning. By allowing a wider range of CIDR sizes, FinOps hubs better accommodate diverse deployment scenarios, such as those involving Power BI VNet data gateways that require larger address spaces. This change not only resolves upgrade blockers but also empowers you to tailor your deployments to meet your unique needs and without unnecessary constraints.&lt;/P&gt;
&lt;H1&gt;Balance cost and freshness with Data Explorer auto-start&lt;/H1&gt;
&lt;P&gt;One of the most effective ways to reduce cloud spend is by scheduling workloads to run only when needed, and Azure Data Explorer clusters are a prime candidate for this strategy. Data Explorer powers ingestion and analysis, but usage is billed hourly, which means you’re being charged for it even when not actively querying or ingesting data. To optimize this, you can configure Data Explorer to shut down automatically after a period of inactivity, but historically, this has introduced a problem because the cluster was shut down when new data needs to be ingested. With FinOps hubs 12, the ingestion pipeline automatically checks the status of the Data Explorer cluster and starts it if it’s stopped when new data arrives. When initiating the Data Explorer cluster, the startup process typically takes approximately 10 minutes. While this delay incurs pipeline execution costs, it remains significantly more cost-effective than maintaining a continuously running cluster (24x7). During this startup phase, data ingestion tasks are paused until the cluster is successfully provisioned. Depending on the timing of the ingestion trigger, there may be instances where the cluster's provisioning state is not yet terminal. This can occur, for example, when the Data Explorer is concurrently executing a stop or start operation while the pipeline attempts to initiate the cluster. In such cases, the pipeline waits for 10 minutes before reattempting the cluster start activity. As expected, detailed outputs—including cluster status, the result of the start operation, and any encountered errors—are available in the Azure Data Factory (ADF) monitoring interface for review and troubleshooting.&lt;BR /&gt;To summarize, this ensures ingestion continues seamlessly without manual intervention, allowing users to optimize for both cost and continuity. It’s a smart enhancement that supports workload scheduling best practices—keeping your data fresh while ensuring you only pay for what you use.&lt;/P&gt;
&lt;P&gt;To get started with scheduling Data Explorer, see &lt;A href="https://learn.microsoft.com/azure/data-explorer/auto-stop-clusters" target="_blank" rel="noopener"&gt;Automatic stop of inactive Azure Data Explorer clusters&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Strengthened security with flexible export permissions&lt;/H1&gt;
&lt;P&gt;FinOps hubs leverage Cost Management exports, which run on a predetermined schedule that can’t be set or changed. But some organizations are looking for more control over when exports run and data gets ingested into FinOps hubs. This is where managed exports come in. Managed exports automate the delivery of Cost Management data, enabling seamless and timely integration with analytics pipelines and reporting tools. Managed exports work by granting your FinOps hub instance access to create and run exports on your behalf. The challenge here is that Cost Management requires the User Access Administrator role to create exports, which is an elevated permission that some organizations restrict due to security policies. To increase the default security posture of FinOps hubs, managed exports are now disabled by default in FinOps hubs 12. If you’d like to use managed exports, simply check the &lt;STRONG&gt;Enable managed exports&lt;/STRONG&gt; checkbox on the Advanced tab (or the set the &lt;STRONG&gt;enableManagedExports&lt;/STRONG&gt; template parameter to &lt;STRONG&gt;true&lt;/STRONG&gt;).&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;By leaving this option disabled or explicitly setting the parameter to &lt;STRONG&gt;false&lt;/STRONG&gt;, you can now deploy FinOps hubs without requiring elevated permissions for role assignments. This makes it easier to deploy in secure or restricted environments while still maintaining core functionality. It’s a small but powerful change that simplifies onboarding and aligns with enterprise-grade security practices.&lt;/P&gt;
&lt;H1&gt;New executive summary in the Cost summary report&lt;/H1&gt;
&lt;P&gt;Understanding where your cloud spend is coming from is critical – not just for FinOps practitioners, but for executive stakeholders as well. That’s why the FinOps toolkit 12 release introduces a new &lt;STRONG&gt;Summary&lt;/STRONG&gt; page in the Cost summary report, designed specifically to provide a high-level, executive-friendly view of cost drivers across your environment.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;This new page highlights the top 10 subscriptions, resource groups, and service categories by spend for the selected period, making it easy to identify where costs are concentrated. It also includes a breakdown of monthly usage by pricing category and a daily spend trend for the last 30 days to facilitate quick pattern recognition and anomaly detection at a glance. To make room for this new executive summary, the original summary page has been renamed to&amp;nbsp;&lt;STRONG&gt;Running total&lt;/STRONG&gt;, which continues to provide a cumulative view of costs over time. Together, these updates offer a more complete and accessible picture of your cloud financials for both technical and non-technical audiences.&lt;/P&gt;
&lt;H1&gt;PowerShell updates for Cost Management exports&lt;/H1&gt;
&lt;P&gt;To ensure compatibility with the latest features and improvements in Microsoft Cost Management, the FinOps toolkit PowerShell commands for Cost Management exports were all updated to default to the latest GA API version, 2025-03-01. This keeps the toolkit aligned with the most recent capabilities and ensures long-term support for evolving services.&lt;/P&gt;
&lt;P&gt;In addition, the default export version for FOCUS exports has been updated to 1.2-preview in the &lt;A href="https://aka.ms/ftk/New-FinOpsCostExport" target="_blank" rel="noopener"&gt;New-FinOpsCostExport command&lt;/A&gt;. This version includes the latest industry and data quality improvements, helping teams get more value from their exported cost data. These updates make it easier to stay aligned with the latest standards while reducing the need for manual configuration. If you need an older dataset version, simply set the -DatasetVersion parameter to the desired version.&lt;/P&gt;
&lt;H1&gt;New versioning strategy for a growing toolkit&lt;/H1&gt;
&lt;P&gt;What started as a modest effort to simplify FinOps operations with a single tool has grown into a suite of nine tools, each addressing a different aspect of FinOps. While we’ve been driving towards a “1.0” release of FinOps hubs, the FinOps toolkit scope has grown, but our approach to versioning hasn’t. With this release, we’re shifting to a versioning strategy that better represents the ever-growing nature of the toolkit as a collection of tools. Instead of “0.12” which only represents the state of a single tool, we’re dropping the “0.” to reflect the collective progress as version “12” of the toolkit as a whole.&lt;/P&gt;
&lt;H1&gt;Other new and noteworthy updates&lt;/H1&gt;
&lt;P&gt;Many small improvements and bug fixes go into each release, so covering everything in detail can be a lot to take in. But I do want to call out a few other small things that you may be interested in.&lt;/P&gt;
&lt;P&gt;In&amp;nbsp;&lt;A href="https://aka.ms/finops/hubs?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Document how savings are calculated and how to troubleshoot negative savings.&lt;/LI&gt;
&lt;LI&gt;Updated the Data Explorer dashboard to use the v1_2 schema.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In&amp;nbsp;&lt;A href="https://aka.ms/ftk/pbi?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Power BI reports&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added an invoice ID filter to the Microsoft Customer Agreement (MCA) invoice recon page in the Invoicing and chargeback report.&lt;/LI&gt;
&lt;LI&gt;Updated KQL reports to use the FinOps hubs v1_2 schema.&lt;/LI&gt;
&lt;LI&gt;Correctly detect the hub version in the Data ingestion report.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In&amp;nbsp;&lt;A href="https://aka.ms/ftk/aoe?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Azure optimization engine&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Link to recommendations Power BI report in MS Learn documentation (#1614).&lt;/LI&gt;
&lt;LI&gt;Aka.ms links to point to the latest version of documentation articles in MS Learn.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A href="https://aka.ms/ftk/data?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;open data&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added 20 new and updated 7 existing resource types.&lt;/LI&gt;
&lt;LI&gt;Added 2 new service mappings.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;What’s next&lt;/H1&gt;
&lt;P&gt;Despite many changes in Microsoft, I’m more excited than ever about what’s coming. The FinOps toolkit has grown into a vibrant community of contributors and users, all passionate about making FinOps more accessible, scalable, and impactful. And we’re just getting started.&lt;/P&gt;
&lt;P&gt;Looking ahead, you can expect continued innovation across the toolkit:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;FinOps hubs will add recommendations, a new extensibility model, and continued data quality improvements.&lt;/LI&gt;
&lt;LI&gt;Power BI and FinOps workbooks will continue to expand with recurring updates and deeper FinOps insights.&lt;/LI&gt;
&lt;LI&gt;Azure Optimization Engine will evolve as its capabilities are integrated into FinOps hubs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To support this momentum, I’m also working on a set of premium services designed to help organizations deploy, customize, and scale the FinOps toolkit with confidence. Whether you need help getting started, tailoring the tools to your environment, or ensuring long-term success, these services are built to meet you where you are – strategic, secure, and ready to deliver value from day one. Connect with me directly on &lt;A href="https://linkedin.com/in/flanakin" target="_blank" rel="noopener"&gt;LinkedIn&lt;/A&gt; or Slack to learn more.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 07 Aug 2025 17:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/what-s-new-in-finops-toolkit-12-july-2025/ba-p/4438562</guid>
      <dc:creator>Michael_Flanakin</dc:creator>
      <dc:date>2025-08-07T17:00:00Z</dc:date>
    </item>
    <item>
      <title>Introducing non-breaking “breaking” changes in FinOps hubs 12</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/introducing-non-breaking-breaking-changes-in-finops-hubs-12/ba-p/4438554</link>
      <description>&lt;P&gt;Before I explain this, I want to say that I’m extremely excited about this update. FinOps hubs was designed to solve a common versioning challenge many organizations face where they need data coming from new columns but can’t update because of breaking changes in other columns. FinOps hubs solves this by introducing these breaking changes in a non-breaking way, giving you the control and flexibility to update when and where you need while leaving your foundational reports and integration points untouched and running just as smoothly as before.&lt;/P&gt;
&lt;P&gt;FinOps hubs 12 is the first release to fully realize the value of this non-breaking, “breaking” changes approach since the architecture was established late last year. This approach ensures the FinOps hubs platform will not break reports, will not stagnate with historical baggage, and will also avoid getting bloated with duplicate columns and data, like you might see in certain Cost and Usage Reports out there. But let me take a step back and walk you through it…&lt;/P&gt;
&lt;H1&gt;How schema versioning works in FinOps hubs&lt;/H1&gt;
&lt;P&gt;FinOps hubs 0.7 added a custom, FOCUS-aligned schema for all supported datasets. When data is ingested into FinOps hubs with Azure Data Explorer or Microsoft Fabric, the native schemas are transformed into a FOCUS-like dataset to provide forward-looking datasets aligned to the future direction of FinOps across the industry. The data is also augmented to with extra columns and missing data to facilitate common FinOps tasks and goals we hear from organizations big and small. We refer to this as the v1_0 schema because all our tables and functions are named *_v1_0 to be clear about what schema version they use.&lt;/P&gt;
&lt;P&gt;Some of you may be using the non-versioned functions, like Costs and Prices. These are wrappers around the corresponding versioned functions, like Costs_v1_0 and Prices_v1_0. The non-versioned functions are for ad-hoc use when you need a quick answer and don’t want to think about what version you need. These always return the latest version. And until FinOps hubs 12, this was always v1_0.&lt;/P&gt;
&lt;P&gt;Now, FinOps hubs 12 includes a new v1_2 dataset that aligns to FOCUS 1.2 and includes even more augmented columns to support new scenarios. This gives you three options when querying the system. Let’s use cost as an example:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Costs&lt;/STRONG&gt; is that ad-hoc function where you don’t have to think about what version you need. This now uses the v1_2 schema.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Costs_v1_0 &lt;/STRONG&gt;is the original FOCUS 1.0 schema that was implemented in FinOps hubs 0.7. This has not changed and will not change.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Costs_v1_2 &lt;/STRONG&gt;is the new schema that aligns to FOCUS 1.2 and includes additional columns to support other scenarios like commitment discount utilization, Azure Hybrid Benefit analysis, and more.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If you followed our guidance, then your reports, dashboards, and integration points should all use the versioned functions, like Costs_v1_0. In that case, upgrading to FinOps hubs 12 shouldn’t impact you at all. All your reports and dashboards will continue to function as they have before. If you find you used non-versioned functions, like Costs, simply change to the versioned functions and you should revert back to the same behavior you were seeing before.&lt;/P&gt;
&lt;H1&gt;Working with older FOCUS exports&lt;/H1&gt;
&lt;P&gt;Microsoft Cost Management has four different dataset versions for their FOCUS exports:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;1.0-preview(v1)&lt;/STRONG&gt; is aligned to FOCUS 1.0 preview from November 2023. This was the first public release.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;1.0&lt;/STRONG&gt; is fundamentally the same as 1.0-preview(v1) except with changes in the official FOCUS columns to align to the FOCUS 1.0 GA.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;1.0r2&lt;/STRONG&gt; is the same as 1.0 except the date columns, like ChargePeriodStart and ChargePeriodEnd, are formatted with seconds. That’s it. Older versions use “2025-01-01T00:00” and 1.0r2 going forward use “2025-01-01T00:00:00”. The only difference is the added “:00” to support some systems which weren’t able to parse dates without seconds.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;1.2-preview&lt;/STRONG&gt; is aligned to FOCUS 1.2, except there are a few gaps that have not been filled, so it’s flagged as a preview. Once those gaps are filled, you’ll see a new “1.2” release.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;FinOps hubs can work with any of these versions. When you export an older version of the data, FinOps hubs simply transforms it to the latest schema version. This means, if you’re working on top of a 1.0-preview(v1) export, that data will now be fully converted to FOCUS 1.2, even if Cost Management didn’t provide the new columns. If you’re still using the v1_0 schema, you won’t even notice the difference. But as soon as you need to leverage one of the newer columns in the v1_2 schema, it’s right there for you, ready when you are. And the best thing is, you don’t need to reprocess any of the data. All your historical data is immediately accessible using either the v1_0 or v1_2 schema.&lt;/P&gt;
&lt;P&gt;I’ll leave it at this for now, but please do leave comments if you’re curious about the inner workings of this and how we implemented it. I’m happy to write a more detailed blog post to share the inner workings. In the meantime, refer to &lt;A href="https://learn.microsoft.com/cloud-computing/finops/toolkit/hubs/data-model" target="_blank"&gt;FinOps hub data model&lt;/A&gt; to learn more.&lt;/P&gt;
&lt;H1&gt;What’s new in Costs_v1_2&lt;/H1&gt;
&lt;P&gt;Each of the datasets supported by FinOps hubs were updated. The Costs dataset had the most updates, so we’ll cover those first. The first difference you’ll notice in Costs_v1_2 is support for the latest version of FOCUS:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added CapacityReservationId&lt;/LI&gt;
&lt;LI&gt;Added CapacityReservationStatus&lt;/LI&gt;
&lt;LI&gt;Added CommitmentDiscountQuantity&lt;/LI&gt;
&lt;LI&gt;Added CommitmentDiscountUnit&lt;/LI&gt;
&lt;LI&gt;Added ServiceSubcategory&lt;/LI&gt;
&lt;LI&gt;Added SkuPriceDetails based on x_SkuDetails, changed to align to FOCUS 1.2 requirements&lt;/LI&gt;
&lt;LI&gt;Renamed x_InvoiceId to InvoiceId&lt;/LI&gt;
&lt;LI&gt;Renamed x_PricingCurrency to PricingCurrency&lt;/LI&gt;
&lt;LI&gt;Renamed x_SkuMeterName to SkuMeter&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You’ll also see new columns coming from Microsoft Cost Management:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;x_AmortizationClass to help filter out principal charges that can be duplicated when summing ListCost and ContractedCost.&lt;/LI&gt;
&lt;LI&gt;x_CommitmentDiscountNormalizedRatio for the instance size flexibility ratio needed to support CommitmentDiscountQuantity calculations.&lt;/LI&gt;
&lt;LI&gt;x_ServiceModel to indicate what service model the charge is (i.e., IaaS, PaaS, SaaS).&lt;/LI&gt;
&lt;LI&gt;x_SkuPlanName for the Marketplace plan name.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Note that some of the above columns are empty coming from Cost Management. FinOps hubs populates most of the missing columns, like the new capacity reservation and commitment discount columns. We added a new x_SourceValues column to track the column changes happening during FinOps hubs data ingestion. If you’re curious about any of the customizations applied on top of Cost Management data, review the properties in x_SourceValues. Any value that is changed is first backed up in x_SourceValues with its original column name and value to help source data quality issues.&lt;/P&gt;
&lt;P&gt;While not a new column, one other change you may notice is that x_SkuTier is now being populated across all Cost Management FOCUS versions. This is an important one because you cannot get this information from actual and amortized cost datasets. You will only see the tier in FOCUS datasets. That’s just one more reason to switch to FOCUS.&lt;/P&gt;
&lt;P&gt;Looking beyond the columns coming from Cost Management, you’ll also see extended columns for Alibaba and Tencent Cloud. This completes our native cloud FOCUS dataset support alongside AWS, GCP, and OCI, which are already supported. (Note we don’t ingest the cost automatically. We added support for the data once it’s been dropped into Azure storage.) This includes the following new columns:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Alibaba
&lt;UL&gt;
&lt;LI&gt;x_BillingItemCode&lt;/LI&gt;
&lt;LI&gt;x_BillingItemName&lt;/LI&gt;
&lt;LI&gt;x_CommodityCode&lt;/LI&gt;
&lt;LI&gt;x_CommodityName&lt;/LI&gt;
&lt;LI&gt;x_InstanceID&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Tencent
&lt;UL&gt;
&lt;LI&gt;x_ComponentName&lt;/LI&gt;
&lt;LI&gt;x_ComponentType&lt;/LI&gt;
&lt;LI&gt;x_ExportTime&lt;/LI&gt;
&lt;LI&gt;x_OwnerAccountID&lt;/LI&gt;
&lt;LI&gt;x_SubproductName&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;FinOps hubs also added new columns to support scenarios covered in Power BI reports and the Data Explorer dashboard. With these columns promoted to the database level, reports will render faster and more consistently. This includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Discount percentage columns: x_NegotiatedDiscountPercent, x_CommitmentDiscountPercent, x_TotalDiscountPercent.&lt;/LI&gt;
&lt;LI&gt;Savings columns: x_NegotiatedDiscountSavings, x_CommitmentDiscountSavings, x_TotalSavings.&lt;/LI&gt;
&lt;LI&gt;Commitment discount utilization columns: x_CommitmentDiscountUtilizationAmount, x_CommitmentDiscountUtilizationPotential.&lt;/LI&gt;
&lt;LI&gt;Azure Hybrid Benefit columns: x_SkuLicenseQuantity, x_SkuLicenseStatus, x_SkuLicenseType, x_SkuLicenseUnit.&lt;/LI&gt;
&lt;LI&gt;SKU property columns: x_SkuCoreCount, x_SkuInstanceType, x_SkuOperatingSystem.&lt;/LI&gt;
&lt;LI&gt;x_ConsumedCoreHours to track total core hours for the charge by multiplying ConsumedQuantity by x_SkuCoreCount.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;FOCUS updates for other v1_2 datasets&lt;/H1&gt;
&lt;P&gt;While updating the Costs dataset, we also updated the other datasets to align to FOCUS 1.2 changes. Changes in other tables weren’t as big, but pair well and will be important to note if you’re using those functions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;CommitmentDiscountUsage
&lt;UL&gt;
&lt;LI&gt;Added CommitmentDiscountUnit&lt;/LI&gt;
&lt;LI&gt;Renamed x_CommitmentDiscountQuantity to CommitmentDiscountQuantity&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Prices
&lt;UL&gt;
&lt;LI&gt;Renamed x_PricingCurrency to PricingCurrency&lt;/LI&gt;
&lt;LI&gt;Renamed x_SkuMeterName to SkuMeter&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Transactions
&lt;UL&gt;
&lt;LI&gt;Renamed x_InvoiceId to InvoiceId&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Recommendations changes for the future&lt;/H1&gt;
&lt;P&gt;In addition to aligning to FOCUS 1.2, we updated the Recommendations dataset schema to account for future plans to ingest &amp;nbsp;Azure Advisor recommendations and also generate custom recommendations. This includes the following new columns:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ResourceId&lt;/LI&gt;
&lt;LI&gt;ResourceName&lt;/LI&gt;
&lt;LI&gt;ResourceType&lt;/LI&gt;
&lt;LI&gt;SubAccountName&lt;/LI&gt;
&lt;LI&gt;x_RecommendationCategory&lt;/LI&gt;
&lt;LI&gt;x_RecommendationDescription&lt;/LI&gt;
&lt;LI&gt;x_RecommendationId&lt;/LI&gt;
&lt;LI&gt;x_ResourceGroupName&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These columns are empty today, but will be populated in a future release when the Azure Advisor integration is complete.&lt;/P&gt;
&lt;H1&gt;Decimal columns switched to the Real datatype&lt;/H1&gt;
&lt;P&gt;In our initial Data Explorer release, we set all floating-point columns, like prices and costs, to use the decimal datatype. Later, we learned that real is preferred when remaining under a certain level of precision. While we couldn’t make the change in a non-breaking way within the v1_0 schema version, adopting a new schema version offered the perfect chance to address this.&lt;/P&gt;
&lt;P&gt;Starting in v1_2, all floating-point columns will use the real datatype. If you’re extending the tables, functions, or building any custom extensions, be sure to switch from decimal to real when you switch to the v1_2 schema. If you opt to remain on v1_0, you can disregard this as v1_0 will continue to use the decimal datatype going forward and will not change based on our non-breaking promise. For those of you who do switch, you may notice a slight performance improvement when working with numbers at scale.&lt;/P&gt;
&lt;H1&gt;Next steps&lt;/H1&gt;
&lt;P&gt;Some may look at this update and see it as a simple update to align to FOCUS 1.2, while others may see it as a major shift in how FinOps hubs work and how that impacts the data being ingested. The truth is it’s somewhere in the middle. FinOps hubs were designed to scale beyond a single FOCUS dataset version. And while FinOps hubs have always supported multiple dataset versions with 1.0-preview(v1), 1.0, and 1.0r2, this is the first time when the schema version has seen such a big change, leveraging the inherent benefits of the architecture.&lt;/P&gt;
&lt;P&gt;We hope you’re as excited about this as we are. You’ve already taken the first step to adopt FOCUS and now you’ll be able to decide when you’re ready to take the next step to FOCUS 1.2 when and where you need it, while keeping all other reports and integrations steady on 1.0. Minimal impact, maximum potential.&lt;/P&gt;
&lt;P&gt;To learn more about managed datasets in FinOps hubs, see &lt;A href="https://learn.microsoft.com/cloud-computing/finops/toolkit/hubs/data-model" target="_blank"&gt;FinOps hub data model&lt;/A&gt;. And if you’re looking for more, I’m working on a set of premium services designed to help organizations deploy, customize, and scale the FinOps hubs with confidence. Whether you need help getting started, tailoring the tools to your environment, or ensuring long-term success, these services are built to meet you where you are – strategic, secure, and ready to deliver value from day one. Connect with me directly on &lt;A href="https://linkedin.com/in/flanakin" target="_blank"&gt;LinkedIn&lt;/A&gt; or Slack to learn more.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 05 Aug 2025 23:27:17 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/introducing-non-breaking-breaking-changes-in-finops-hubs-12/ba-p/4438554</guid>
      <dc:creator>Michael_Flanakin</dc:creator>
      <dc:date>2025-08-05T23:27:17Z</dc:date>
    </item>
    <item>
      <title>News and updates from FinOps X 2025: Transforming FinOps in the era of AI</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/news-and-updates-from-finops-x-2025-transforming-finops-in-the/ba-p/4426851</link>
      <description>&lt;P&gt;Last year, I talked about &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/news-and-updates-from-finops-x-2024-how-microsoft-is-empowering-organizations/4180744?WT.mc_id=finops-250625-micflan&amp;amp;WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener" data-lia-auto-title="how Microsoft is empowering stakeholders across the organization" data-lia-auto-title-active="0"&gt;how Microsoft is empowering stakeholders across the organization&lt;/A&gt; with FinOps resources, tools, and services. It's been an amazing year with some unbelievable AI-powered advancements that set the stage for an even more amazing future. AI has become a central theme in nearly every corner of business and technology. It's no surprise that &lt;A href="https://x.finops.org?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;FinOps X&lt;/A&gt; 2025 was loaded with news about how AI is changing everything.&lt;/P&gt;
&lt;H1&gt;Managing AI costs with FinOps&lt;/H1&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/education?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/education.png" alt="FinOps capability: FinOps education and enablement" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you’re new to AI or new to FinOps, a great place to start is the &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/managing-the-cost-of-ai-leveraging-the-finops-framework/4381666?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;FinOps Framework for AI walkthrough&lt;/A&gt;. This quick guide offers a high-level overview of the FinOps Framework for AI workloads. From there, check out &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/understanding-ai-workload-cost-considerations/4400844?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Understanding AI workload cost considerations&lt;/A&gt; for an introduction in some of the factors you’ll need to define the right architectural balance of cost and other metrics to meet your business needs. With these, you should have the foundation for what you need to price out your AI workloads with &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/optimize-ai-costs-by-choosing-the-right-azure-openai-pricing-offer-for-you/4286390?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Azure OpenAI pricing offers&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/reporting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/reporting.png" alt="FinOps capability: Reporting and analytics" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/budgeting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/budgeting.png" alt="FinOps capability: Budgeting" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/uniteconomics?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/uniteconomics.png" alt="FinOps capability: Unit economics" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Regardless of where you are on your AI journey, transparency is key to making smart decisions. And making insights available to every stakeholder is critical to ensuring everyone takes shared ownership for their technology usage. Whether you’re an engineer &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/managing-azure-openai-costs/4286830?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;managing Azure OpenAI costs in the Azure portal&lt;/A&gt; or on a business or finance team working out of Power BI or Microsoft Fabric to &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/managing-azure-openai-costs-with-the-finops-toolkit-and-focus-turning-tokens-int/4413886?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;manage costs and report on unit economics based on token usage (guest perspective)&lt;/A&gt;, the year has been packed with useful tools and resources to monitor and control your AI spend.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/workloads?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/workloads.png" alt="FinOps capability: Workload optimization" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/rates?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/rates.png" alt="FinOps capability: Rate optimization" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/policy?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/policy.png" alt="FinOps capability: Policy and governance" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But I have to say, some of the most impactful changes when it comes to FinOps for AI are the introduction of &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/unlock-cost-savings-with-azure-ai-foundry-provisioned-throughput-reservations/4414647?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;provisioned throughput unit (PTU) reservations&lt;/A&gt; and &lt;A href="https://devblogs.microsoft.com/foundry/achieve-end-to-end-observability-in-azure-ai-foundry/?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Azure AI Foundry Observability&lt;/A&gt;. My favorite part about PTU reservations is that they’re built around you and offer maximum flexibility with 1-month or 1-year reservations. What better way to plan ahead and save on even the newest AI workloads! And with Azure AI Foundry Observability, you have multiple tools all integrated to support monitoring, optimization, and governance, including weighing the cost vs. quality vs. performance of AI models.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;And if you’re looking to automate model selection, check out the&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/model-router?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Azure AI Foundry model router&lt;/A&gt;, which can select the best large language model (LLM) to respond to a given prompt in real time by evaluating cost, performance, and query complexity. It’s a brave new world!&lt;/P&gt;
&lt;H1&gt;Transforming FinOps with AI&lt;/H1&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/reporting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/reporting.png" alt="FinOps capability: Reporting and analytics" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/planning?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/planning.png" alt="FinOps capability: Planning and estimating" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And while maximizing ROI for your AI workloads is important, I have to say I’m most excited about advancements in “AI for FinOps”, which is about AI-powered solutions that help you accomplish your FinOps goals. It all begins in the Azure portal, where &lt;A href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/microsoft-copilot-in-azure-is-now-generally-available/4402033?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Copilot in Azure is now generally available&lt;/A&gt;! Microsoft Cost Management makes it easier than ever to engage with Copilot with integrated prompts covering new scenarios, like cost estimation and simulation, and the ability to &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-november-2024/?WT.mc_id=finops-250625-micflan#azure-copilot-to-cost-analysis" target="_blank" rel="noopener"&gt;create custom views in Cost analysis&lt;/A&gt;. To learn more about what you can do with Copilot in Azure, see &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/discover-cost-management-opportunities-using-tailored-copilot-in-azure-prompts/4200589?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Discover cost management opportunities using tailored prompts&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/anomalies?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/anomalies.png" alt="FinOps capability: Anomaly management" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/forecasting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/forecasting.png" alt="FinOps capability: Forecasting" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But this is just the beginning. You can also use &lt;A href="https://learn.microsoft.com/azure/developer/github-copilot-azure/get-started?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;GitHub Copilot for Azure&lt;/A&gt; to answer those same questions directly from Visual Studio Code (&lt;A href="https://github.blog/changelog/2025-05-19-agent-mode-and-mcp-support-for-copilot-in-jetbrains-eclipse-and-xcode-now-in-public-preview/?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;or your favorite code editor&lt;/A&gt;), bringing FinOps insights right into your development workflow. Additionally, you can simplify and accelerate your journey to the cloud GitHub Copilot App Modernization extension packs for &lt;A href="https://devblogs.microsoft.com/java/public-preview-app-mod-java/?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Java&lt;/A&gt; and &lt;A href="https://dotnet.microsoft.com/en-us/platform/upgrade?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;.NET&lt;/A&gt;, reducing up-front complexity and costs of migration. And for the power users, GitHub Copilot also enables an &lt;A href="https://code.visualstudio.com/blogs/2025/02/24/introducing-copilot-agent-mode?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;innovative Agent mode&lt;/A&gt;, which not only answers questions, but can take action for you! Take this even further by &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-11-%E2%80%93-may-2025/4420719?WT.mc_id=finops-250625-micflan#community-4420719-toc-hId-1323282817" target="_blank" rel="noopener"&gt;connecting GitHub Copilot to FinOps hubs&lt;/A&gt; and unleash agentic AI for FinOps in a workspace built for collaboration! Run advanced queries, generate complex reports, and orchestrate data-driven workflows. Forecast your costs, identify anomalous usage and spend patterns, generate code and scripts to automate FinOps processes using the &lt;A href="https://github.blog/changelog/2025-05-19-github-copilot-coding-agent-in-public-preview/?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;GitHub Copilot coding agent&lt;/A&gt;, and more! The sky truly is the limit!&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/ingestion?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/ingestion.png" alt="FinOps capability: Data ingestion" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And if you’re looking to bring AI to the masses, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-10-%E2%80%93-april-2025/4412665?WT.mc_id=finops-250625-micflan#community-4412665-toc-hId-1322418068" target="_blank" rel="noopener"&gt;ingest your data into Microsoft Fabric&lt;/A&gt;, a unified platform that democratizes data engineering for the masses with AI-powered tools, like Copilot, integrated within every experience. And with custom data agents, you can tune that experience to meet your organizational needs and align to your governance policies.&lt;/P&gt;
&lt;H1&gt;Elevating your FinOps journey with FOCUS&lt;/H1&gt;
&lt;P&gt;When &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-joins-the-finops-foundation/?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Microsoft joined the FinOps Foundation&lt;/A&gt;, I spoke about the importance of engaging with the community. Over the years, Microsoft has been an engaged member of the FinOps Foundation Governing Board, Technical Advisory Council, several working groups and special interest groups, the FinOps Open Cost and Usage Specification (FOCUS), as well as engaging directly with the FinOps community in Slack. The vibrant, welcoming community is what makes FinOps such a success. If I had to use one word to describe the community, that word would be “family.” And FinOps X is our family reunion where we get to share and celebrate the amazing progress we’ve made both for and with this amazing community.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/ingestion?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/ingestion.png" alt="FinOps capability: Data ingestion" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/reporting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/reporting.png" alt="FinOps capability: Reporting and analytics" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/rates?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/rates.png" alt="FinOps capability: Rate optimization" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Last year, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/focus-an-open-specification-for-cloud-cost-transparency/4184578?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;we announced FOCUS 1.0 exports in Cost Management&lt;/A&gt;. Since then, we’ve seen amazing adoption – more than one-third of all cost exports are FOCUS exports. While adoption has moved much faster than we expected, it’s not surprising, given FOCUS is the &lt;EM&gt;best&lt;/EM&gt; version of our cost data. And with our continued investment in each release, it will only get better. With that, I’m happy to share that a &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/focus-1-2-in-microsoft-cost-management-unified-multi-cloud-multi-currency-report/4423852?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;preview of FOCUS 1.2 is now available in Cost Management exports&lt;/A&gt;!&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;If you haven’t tried FOCUS, now is a great time to see what you’re missing. To learn more about FOCUS and its benefits, see&amp;nbsp;&lt;A href="https://aka.ms/finops/focus?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;What is FOCUS?&lt;/A&gt; and explore the many resources to help you understand and adopt FOCUS. For an in-depth walkthrough, check out the &lt;A href="https://aka.ms/finops/focus?WT.mc_id=finops-250625-micflan#learning-focus-blog-series" target="_blank" rel="noopener"&gt;Learning FOCUS blog series&lt;/A&gt;, which covers every nook and cranny of the specification with useful tips and tricks. And to get started with exports, see &lt;A href="https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-improved-exports?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Create and manage Cost Management exports&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you’re already using or plan to use FOCUS, I would encourage you to &lt;A href="https://focus.finops.org/contribute/?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;join the project&lt;/A&gt;, share your direct feedback, and help us improve the specification to better meet your needs. Let’s do this together!&lt;/P&gt;
&lt;H1&gt;Strengthening FinOps fundamentals&lt;/H1&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/education?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/education.png" alt="FinOps capability: FinOps education and enablement" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There’s a misconception that I still hear today that to adopt FinOps, you need to implement every capability or you must have a central FinOps team. There’s nothing further from the truth. FinOps is about maximizing the ROI you get from technology and the FinOps Framework lays out a map that helps you plot the course for your journey. And with that, we continue to invest in guidance to help educate and enable stakeholders across the organization. From &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/learn-to-manage-investments-and-cost-efficiency-of-azure-and-ai-workloads/4396862?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;learning modules&lt;/A&gt; and &lt;A href="https://learn.microsoft.com/cloud-computing/finops/implementing-finops-guide?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;documentation&lt;/A&gt; to new and evolving &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/optimize-your-azure-costs-with-our-expert-guidance-pricing-tools-and-resources/4244981?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;FinOps resources&lt;/A&gt; that we continually update to align to the latest version of the FinOps Framework, Well-Architected Framework, and Cloud Adoption Framework. And if you need assistance, we can also help you adopt and implement FinOps with specialized offerings from Microsoft Services that cover every aspect of the FinOps Framework – from education and assessments to foundational implementation, operations, and strategic planning. We’re here to help. Reach out to your Microsoft account rep to learn more.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/reporting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/reporting.png" alt="FinOps capability: Reporting and analytics" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/planning?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/planning.png" alt="FinOps capability: Planning and estimating" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;When it comes to FinOps tooling, native provider tools are usually the first place you go for quick and easy answers. I already talked about how Copilot makes it easier and faster than ever to get quick answers with &lt;A href="https://techcommunity.microsoft.com/blog/azureinfrastructureblog/microsoft-copilot-in-azure-is-now-generally-available/4402033?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Copilot in Azure—now generally available&lt;/A&gt;. If you aren’t using Copilot to answer common questions, you’re missing out. Copilot is continually expanded to support new capabilities, like &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-november-2024/?WT.mc_id=finops-250625-micflan#azure-copilot-to-cost-analysis" target="_blank" rel="noopener"&gt;creating new custom views in Cost analysis&lt;/A&gt;, &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-november-2024/?WT.mc_id=finops-250625-micflan#copilot-simulation-for-azure-openai-service" target="_blank" rel="noopener"&gt;simulating Azure OpenAI costs&lt;/A&gt;, &lt;A href="https://azure.microsoft.com/en-us/updates/?WT.mc_id=finops-250625-micflan&amp;amp;id=474649" target="_blank" rel="noopener"&gt;troubleshooting disk performance&lt;/A&gt;, and more. Cost Management brings Copilot one step closer with &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-february-2025/?WT.mc_id=finops-250625-micflan#_Copilot_nudges" target="_blank" rel="noopener"&gt;embedded Copilot prompts&lt;/A&gt; that make it easier to start the right conversation directly from within Cost Management. Add on &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/enhancements-to-purchase-related-details-in-cost-management-for-mca-customers/4411248?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;data quality and completeness improvements&lt;/A&gt;, new smart views, like &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/managing-azure-openai-costs/4286830?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Azure OpenAI costs in Cost analysis&lt;/A&gt;, and pricing updates spanning virtual machines, Azure AI, Microsoft Fabric, and more, and there’s plenty to explore!&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/sustainability?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/sustainability.png" alt="FinOps capability: Cloud sustainability" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Looking beyond Cost Management, &lt;A href="https://techcommunity.microsoft.com/blog/azuregovernanceandmanagementblog/sustainable-cloud-journey-from-on-premises-to-azure-optimization/4413889?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Azure Carbon Optimization is now generally available&lt;/A&gt;, giving you one place to view carbon emissions across services in the Azure portal. Paired with this is new sustainability features in Azure Migrate, which helps you plan your on-premises to cloud migration. With application-aware assessments, integrated sustainability metrics, and a new user experience with enhanced guidance, you’ll want to see how Azure Migrate can help you quantify the value of migrating your workloads to the cloud. To learn more, see &lt;A href="https://techcommunity.microsoft.com/blog/azuremigrationblog/azure-migrate---build-2025-updates/4411755?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Azure Migrate Build 2025 updates&lt;/A&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/architecting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/architecting.png" alt="FinOps capability: Architecting for cloud" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/workloads?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/workloads.png" alt="FinOps capability: Workload optimization" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/rates?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/rates.png" alt="FinOps capability: Rate optimization" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/policy?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/policy.png" alt="FinOps capability: Policy and governance" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;But that just covers some of the core FinOps tools. We’d need an entirely separate blog post to cover all the updates from all Microsoft Cloud services. I’ll mention just a few and encourage you to follow the &lt;A href="https://aka.ms/costmgmt/updates?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;Cost Management updates&lt;/A&gt; for more.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Azure Backup &lt;A href="https://azure.microsoft.com/en-us/updates/?WT.mc_id=finops-250625-micflan&amp;amp;id=azure-backup-reduced-protected-instance-fees-hana-backup" target="_blank" rel="noopener"&gt;reduced protected instance fees for SAP HANA backups&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Azure Cache for Redis added a &lt;A href="https://azure.microsoft.com/en-us/updates/v2/Smaller-Enterprise-tier-cache-instance-for-Azure-Cache-for-Redis?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;smaller enterprise tier cache instance&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Azure Cosmos DB added &lt;A href="https://azure.microsoft.com/en-us/updates/v2/Azure-Cosmos-DB-dynamic-scaling?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;dynamic scaling&lt;/A&gt; and &lt;A href="https://azure.microsoft.com/en-us/updates/?WT.mc_id=finops-250625-micflan&amp;amp;id=483616" target="_blank" rel="noopener"&gt;autoscale for vCore-based MangoDB&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Azure Database for PostgreSQL added &lt;A href="https://azure.microsoft.com/en-us/updates/v2/Advisor-Recommendation-Azure-DB-PostgreSQL?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;new Advisor recommendations&lt;/A&gt; and &lt;A href="https://azure.microsoft.com/en-us/updates/v2/V5-reservations-for-Azure-Database?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;V5 reservations&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Azure Databricks added &lt;A href="https://azure.microsoft.com/en-us/updates/v2/Databricks-Jobs-Serverless-Compute?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;serverless jobs&lt;/A&gt; to reduce unused capacity costs.&lt;/LI&gt;
&lt;LI&gt;Azure DevTest Labs added &lt;A href="https://azure.microsoft.com/updates/?WT.mc_id=finops-250625-micflan&amp;amp;id=476885" target="_blank" rel="noopener"&gt;VM hibernation&lt;/A&gt; to reduce costs by pausing VMs while preserving state.&lt;/LI&gt;
&lt;LI&gt;Azure Kubernetes Service added &lt;A href="https://azure.microsoft.com/updates/?WT.mc_id=finops-250625-micflan&amp;amp;id=486804" target="_blank" rel="noopener"&gt;new Advisor recommendations&lt;/A&gt; for rightsizing, autoscaling, and more.&lt;/LI&gt;
&lt;LI&gt;Azure Monitor Log Analytics added &lt;A href="https://azure.microsoft.com/en-us/updates/v2/Preview-Summary-Rules-Azure-Monitor-Log-Analytics?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;summary rules&lt;/A&gt; to aggregate data, minimize cost, and speed up query performance.&lt;/LI&gt;
&lt;LI&gt;Azure NetApp Files added support for &lt;A href="https://azure.microsoft.com/en-us/updates/v2/Volume-enhancements?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;50 GiB minimum volume sizes&lt;/A&gt;, &lt;A href="https://azure.microsoft.com/en-us/updates/v2/ANF-Cool-Access?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;storage with cool access for all service levels&lt;/A&gt;, and &lt;A href="https://azure.microsoft.com/en-us/updates/v2/ANF-Reserved-Capacity?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;reservations&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Azure SQL Managed Instance improved the &lt;A href="https://azure.microsoft.com/updates/?WT.mc_id=finops-250625-micflan&amp;amp;id=491277" target="_blank" rel="noopener"&gt;free offer&lt;/A&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;If all that isn’t enough, the FinOps blog also has you covered with guidance to &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/how-to-control-your-azure-costs-with-governance-and-azure-policy/4397977?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;control costs with Azure Policy&lt;/A&gt;, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/convert-your-linux-workloads-while-cutting-costs-with-azure-hybrid-benefit/4413141?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;cut costs with Azure Hybrid Benefit for Linux&lt;/A&gt;, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/a-guide-to-azure-storage-and-virtual-machines-cost-optimization/4388734?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;optimize storage and VM costs&lt;/A&gt;, and more.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/licensing?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/licensing.png" alt="FinOps capability: Licensing and SaaS" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/chargeback?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/chargeback.png" alt="FinOps capability: Invoicing and chargeback" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Of course, Azure service costs are only part of the equation—SaaS costs are also critical to a holistic FinOps practice, with the added benefit of Marketplace SaaS charges accruing towards your Microsoft Azure Consumption Commitment (MACC), effectively maximizing your rate negotiation power. And now, with &lt;A href="https://techcommunity.microsoft.com/blog/marketplace-blog/meet-customer-business-needs-with-flexible-billing-schedules-in-the-marketplace/4410475?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;flexible billing for private Marketplace offers&lt;/A&gt; and the ability to &lt;A href="https://techcommunity.microsoft.com/blog/marketplace-blog/lock-in-marketplace-terms-for-up-to-five-years-with-multiyear-contract-durations/4417981?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;lock in marketplace terms for up to five years&lt;/A&gt;, you have more options than ever to strike the right deal with your SaaS vendors that aligns cloud spending with your business needs.&lt;/P&gt;
&lt;P&gt;These enhancements help ensure your teams have the clarity and flexibility they need to manage budgets, allocate costs, and drive accountability across the organization. With all these updates, you have more ways than ever to manage, optimize, and report on your cloud investments directly in the Azure portal and other native Microsoft tools.&lt;/P&gt;
&lt;H1&gt;Unlocking advanced analytics&lt;/H1&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/ingestion?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/ingestion.png" alt="FinOps capability: Data ingestion" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/allocation?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/allocation.png" alt="FinOps capability: Allocation" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;While the Azure portal makes it easy to get quick answers, sometimes you need more. Whether you need to integrate cost data into an existing system or are simply looking for more flexible reporting, exports offer a reliable, scalable solution that pushes data to you, simplifying data acquisition and ingestion. And with the &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/generally-available-enhanced-cost-management-exports/4407748?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;general availability of Cost Management exports&lt;/A&gt;, you can get your data where you need it, in the format you want with support for efficient parquet and compression formats—making it simple to move large datasets into your analytics platform of choice. The new exports platform is available across every Microsoft Cloud environment (including Azure Government and Azure China) supporting Enterprise Agreement, Microsoft Customer Agreement, and Microsoft Partner Agreement accounts and subscriptions. Based on customer feedback, &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-february-2025/?WT.mc_id=finops-250625-micflan#_New_fields_for" target="_blank" rel="noopener"&gt;exports also include new AccountId and InvoiceSectionId columns&lt;/A&gt; in the latest dataset versions to help allocate costs more precisely across your business.&lt;/P&gt;
&lt;P&gt;If you need to manipulate or augment the cost data, Microsoft Fabric provides a unified platform for analytics with all the tools you need to integrate and join with other cloud and business data. Sign up for the &lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-november-2024/?WT.mc_id=finops-250625-micflan#Exports-to-Microsoft-Fabric" target="_blank" rel="noopener"&gt;Cost Management export to Fabric private preview&lt;/A&gt; to push data directly into a Microsoft Fabric lakehouse, removing the need for Azure storage.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/ftk/fx/reporting?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/reporting.png" alt="FinOps capability: Reporting and analytics" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/rates?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/rates.png" alt="FinOps capability: Rate optimization" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/chargeback?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/chargeback.png" alt="FinOps capability: Invoicing and chargeback" border="0" /&gt;&lt;/A&gt; &amp;nbsp;&lt;A href="https://aka.ms/ftk/fx/policy?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;&lt;IMG style="display: inline-block; height: 30px; padding: 5px 0;" src="https://microsoft.github.io/finops-toolkit/svg/fx/policy.png" alt="FinOps capability: Policy and governance" border="0" /&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you’re looking for lightweight reporting on data across accounts and subscriptions, the FinOps toolkit now offers &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-0-5-%E2%80%93-august-2024/4254148?WT.mc_id=finops-250625-micflan#community-4254148-toc-hId-1959470042" target="_blank" rel="noopener"&gt;Power BI reports that connect to raw exports in storage&lt;/A&gt;. This is the quickest way to get up and running in Power BI where you can build more advanced reports with the latest data from Cost Management. FinOps toolkit Power BI reports have a &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-0-8-%E2%80%93-february-2025/4391573?WT.mc_id=finops-250625-micflan#community-4391573-toc-hId--506308101" target="_blank" rel="noopener"&gt;fresh, new look and feel&lt;/A&gt; and offer expanded coverage of &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-11-%E2%80%93-may-2025/4420719?WT.mc_id=finops-250625-micflan#community-4420719-toc-hId--484171646" target="_blank" rel="noopener"&gt;invoice reconciliation and commitment discount utilization&lt;/A&gt;, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-0-9-%E2%80%93-march-2025/4403658?WT.mc_id=finops-250625-micflan#community-4403658-toc-hId-2001582680" target="_blank" rel="noopener"&gt;reservation break-even point&lt;/A&gt;, &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-0-6-%E2%80%93-september-2024/4266301?WT.mc_id=finops-250625-micflan#community-4266301-toc-hId-1960454936" target="_blank" rel="noopener"&gt;cloud governance&lt;/A&gt;, and more.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;For more advanced reporting with larger accounts or multi-year reporting needs, FinOps hubs offer an open, extensible platform that scales to meet your needs. FinOps hubs provide scalable analytics that can now be hosted on top of &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-7-%E2%80%93-november-2024/4352699?WT.mc_id=finops-250625-micflan#community-4352699-toc-hId--509971365" target="_blank" rel="noopener"&gt;Azure Data Explorer&lt;/A&gt; or &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-10-%E2%80%93-april-2025/4412665?WT.mc_id=finops-250625-micflan#community-4412665-toc-hId-1322418068" target="_blank" rel="noopener"&gt;Microsoft Fabric Real-Time Intelligence&lt;/A&gt;. FinOps hubs add &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-7-%E2%80%93-november-2024/4352699?WT.mc_id=finops-250625-micflan#community-4352699-toc-hId-1297483098" target="_blank" rel="noopener"&gt;network security&lt;/A&gt;, a &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/what%E2%80%99s-new-in-finops-toolkit-0-8-%E2%80%93-february-2025/4391573?WT.mc_id=finops-250625-micflan#community-4391573-toc-hId--953645824" target="_blank" rel="noopener"&gt;version-agnostic platform&lt;/A&gt; that protects you from compatibility issues, multi-tenant, and &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/ea-to-mca-how-the-finops-toolkit-can-help-you-transition-smoothly/4409924?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;multi-account&lt;/A&gt; support using an extensible platform that can also support &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/getting-started-with-finops-hubs-multicloud-cost-reporting-with-azure-and-google/4415190?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;cross-cloud reporting needs&lt;/A&gt; and supports a &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/creating-custom-analyses-and-reports-with-finops-hubs/4408601?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;broad set of reporting and data connectivity options&lt;/A&gt;. FinOps hubs take Cost Management FOCUS exports and perform additional data cleansing to offer the best version of FOCUS data available, using a platform with built-in capabilities like forecasting and anomaly detection. And when you connect FinOps hubs to Microsoft Fabric, you also have a unified platform for self-serve analytics with an AI-powered, SaaS-like experience that streamlines data engineering. Microsoft Fabric offers Copilot integration within every experience, making it effortless to build the solutions and get the answers you need.&lt;/P&gt;
&lt;P&gt;You can also leverage GitHub Copilot or your own AI agents to bring agentic AI to your FinOps practice. With &lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-11-%E2%80%93-may-2025/4420719?WT.mc_id=finops-250625-micflan#community-4420719-toc-hId-1323282817" target="_blank" rel="noopener"&gt;FinOps-tuned AI instructions and prompts&lt;/A&gt;, GitHub Copilot Agent mode can answer questions about your data, build detailed reports, or orchestrate and automate complex FinOps scenarios.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;FinOps hubs is built for the community, by the community to&amp;nbsp;&lt;A href="https://techcommunity.microsoft.com/blog/finopsblog/a-journey-from-excel-to-finops-hubs/4395902?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;help organizations evolve their FinOps practice&lt;/A&gt; and gain the transparency and accountability needed to meet business needs.&lt;/P&gt;
&lt;H1&gt;Next steps&lt;/H1&gt;
&lt;P&gt;I hope you're as thrilled as I am about the transformative changes we're witnessing in the realm of FinOps, especially with the advent of AI. The evolution of FinOps in the era of AI is set to revolutionize how we manage cloud and technology innovations, bringing unprecedented efficiency and insights. This is just the beginning, and the potential is limitless. Stay tuned for more updates on the &lt;A href="https://aka.ms/finops/blog?WT.mc_id=finops-250625-micflan" target="_blank" rel="noopener"&gt;FinOps blog&lt;/A&gt; as we continue to explore and innovate in this exciting journey.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Jul 2025 20:15:56 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/news-and-updates-from-finops-x-2025-transforming-finops-in-the/ba-p/4426851</guid>
      <dc:creator>micflan</dc:creator>
      <dc:date>2025-07-06T20:15:56Z</dc:date>
    </item>
    <item>
      <title>FOCUS 1.2 in Microsoft Cost Management: Unified multi-cloud, multi-currency reporting</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/focus-1-2-in-microsoft-cost-management-unified-multi-cloud-multi/ba-p/4423852</link>
      <description>&lt;P data-start="359" data-end="770"&gt;On June 3, 2025, the FinOps Foundation released the &lt;A class="lia-external-url" href="https://www.finops.org/insights/focus-1-2-available/?WT.mc_id=finops-250617-jojohn" target="_blank" rel="noopener"&gt;FOCUS 1.2&lt;/A&gt;&amp;nbsp;standard, introducing key enhancements to help FinOps teams analyze, manage, and optimize cloud costs. We’re excited to announce that Microsoft Cost Management now supports exporting cost data using the FOCUS 1.2 schema, available in preview. This update empowers organizations to accelerate their FinOps journey with richer, more standardized data.&lt;/P&gt;
&lt;P data-start="772" data-end="1718"&gt;FOCUS 1.2 provides FinOps teams with a unified, auditable, and highly detailed dataset that simplifies cost management across cloud, SaaS, and PaaS services. By integrating billing data into a single schema, teams can streamline operations and use one dashboard or query for all technology spend—eliminating redundant workflows.&lt;/P&gt;
&lt;P data-start="1720" data-end="1909"&gt;The dataset is in preview as a few fields required for full FOCUS 1.2 conformance are not yet populated. These will be enabled in future updates as supporting capabilities become available.&lt;/P&gt;
&lt;H2&gt;What’s new in the FOCUS 1.2-preview dataset&lt;/H2&gt;
&lt;P&gt;This release introduces several important enhancements designed to make cost management more powerful and intuitive.&lt;/P&gt;
&lt;P&gt;Several extension columns have been renamed to align to FOCUS 1.2:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;x_InvoiceId&amp;nbsp;is now InvoiceId.&lt;/LI&gt;
&lt;LI&gt;x_PricingCurrency is now PricingCurrency.&lt;/LI&gt;
&lt;LI&gt;x_SkuMeterName is now SkuMeter.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In addition to these, you'll also find a few new columns to provide richer insights and greater flexibility:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ServiceSubcategory is a provider-agnostic breakdown of ServiceCategory.&lt;/LI&gt;
&lt;LI&gt;x_ServiceModel is the cloud service model (IaaS, PaaS, or SaaS) for the service being charged for.&lt;/LI&gt;
&lt;LI&gt;x_SkuPlanName is the marketplace plan name. This was inadvertently left out of our previous FOCUS dataset versions.&lt;/LI&gt;
&lt;LI&gt;x_AmortizationClass indicates if a charge is a principal payment that will be amortized or is an effective charge that is amortized over time. This can be used to filter out principal charges when summing ListCost and ContractedCost to avoid double-counting.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Lastly, the following columns were added to align to FOCUS 1.2 but are not being set yet. These columns are currently null (empty) and will be populated as new capabilities become available. You will not need to update the FOCUS version when they are specified.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;CapacityReservationId&lt;/LI&gt;
&lt;LI&gt;CapacityReservationStatus&lt;/LI&gt;
&lt;LI&gt;CommitmentDiscountQuantity&lt;/LI&gt;
&lt;LI&gt;CommitmentDiscountUnit&lt;/LI&gt;
&lt;LI&gt;SkuPriceDetails&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Updates for all FOCUS datasets&lt;/H2&gt;
&lt;P&gt;As part of this update, the following columns were also updated in all FOCUS dataset versions to better align with FOCUS requirements and provide a more complete dataset.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;x_SkuTier is now set to a unique tier ID.&lt;/LI&gt;
&lt;LI&gt;SubAccountName, x_AccountId, x_AccountName, x_AccountOwnerId, x_InvoiceSectionId, x_InvoiceSectionName, and x_PricingUnitDescription no longer use placeholder values like “Unassigned” and "-2" to meet FOCUS requirements.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Next steps&lt;/H2&gt;
&lt;P&gt;To learn more about the FOCUS 1.2 schema and its capabilities, please refer to the &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/cost-management-billing/dataset-schema/cost-usage-details-focus?WT.mc_id=finops-250617-jojohn" target="_blank" rel="noopener"&gt;FOCUS cost and usage details file schema&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;To get started, simply&amp;nbsp;&lt;A class="lia-external-url" href="http://aka.ms/costmgmt/exports?WT.mc_id=finops-250617-jojohn" target="_blank" rel="noopener"&gt;create a new export&lt;/A&gt; and select the FOCUS 1.2-preview dataset version. We look forward to seeing how these enhancements help you drive greater value and efficiency in your FinOps practice.&lt;/P&gt;</description>
      <pubDate>Sun, 06 Jul 2025 20:20:15 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/focus-1-2-in-microsoft-cost-management-unified-multi-cloud-multi/ba-p/4423852</guid>
      <dc:creator>jozfjon</dc:creator>
      <dc:date>2025-07-06T20:20:15Z</dc:date>
    </item>
    <item>
      <title>A practitioner's guide to accelerating FinOps with GitHub Copilot and FinOps hubs</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/a-practitioner-s-guide-to-accelerating-finops-with-github/ba-p/4420302</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;ℹ️ Quick implementation overview&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Setup time: ~30 minutes for basic configuration&lt;BR /&gt;Target audience: FinOps practitioners, finance teams, engineering managers&lt;BR /&gt;Prerequisites: Azure subscription with FinOps hubs deployed, VS Code, GitHub Copilot&lt;BR /&gt;Key enabler: FinOps Hub Copilot v0.11 release&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 data-line="20"&gt;Key benefits&lt;/H3&gt;
&lt;P data-line="22"&gt;&lt;STRONG&gt;🎯 Democratized analytics&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Non-technical team members can perform advanced cost analysis without KQL expertise.&lt;/P&gt;
&lt;P data-line="25"&gt;&lt;STRONG&gt;⚡ Faster insights&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Natural language eliminates query writing overhead and accelerates time-to-insights.&lt;/P&gt;
&lt;P data-line="28"&gt;&lt;STRONG&gt;📋 FinOps Framework alignment&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; All queries map directly to validated FinOps Framework capabilities.&lt;/P&gt;
&lt;P data-line="31"&gt;&lt;STRONG&gt;🔒 Enterprise ready&lt;/STRONG&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Built on proven FinOps hub data foundation with security and governance controls.&lt;/P&gt;
&lt;P data-line="36"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-line="36"&gt;FinOps practitioners face a common challenge: bridging the gap between complex cost data and actionable business insights. While &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs?WT.mc_id=finops-250605-brettw" target="_blank"&gt;FinOps hubs&lt;/A&gt; provide a comprehensive, analytics-ready foundation aligned with the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/finops-framework?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/finops-framework"&gt;FinOps Framework&lt;/A&gt;, accessing and analyzing this data traditionally requires deep technical expertise in KQL and schema knowledge.&lt;/P&gt;
&lt;P data-line="38"&gt;This guide demonstrates how to perform sophisticated cost analysis using natural language queries using GitHub Copilot in VS Code connected to &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/whats-new-in-finops-toolkit-0-11-%E2%80%93-may-2025/4420719?WT.mc_id=finops-250605-brettw" data-lia-auto-title="FinOps hubs 0.11" data-lia-auto-title-active="0" target="_blank"&gt;FinOps hubs 0.11&lt;/A&gt; via the Azure MCP server. This approach democratizes advanced analytics across FinOps teams, supporting faster decision-making and broader organizational adoption of FinOps practices.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;ℹ️&lt;STRONG&gt; Understanding the technology stack&lt;/STRONG&gt;&lt;BR /&gt;The&amp;nbsp;Model Context Protocol (MCP)&amp;nbsp;is an open standard that enables AI agents to securely connect to external data sources and tools. The&amp;nbsp;Azure MCP server&amp;nbsp;is Microsoft's implementation that provides this connectivity specifically for Azure resources, while&amp;nbsp;GitHub Copilot&amp;nbsp;acts as the AI agent that translates your natural language questions into the appropriate technical queries.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H2 data-line="48"&gt;Understanding the foundation: FinOps hubs and natural language integration&lt;/H2&gt;
&lt;P data-line="50"&gt;FinOps hubs serve as the centralized data platform for cloud cost management, providing unified cost and usage data across clouds, accounts, and tenants. The integration with GitHub Copilot through the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/developer/azure-mcp-server?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/"&gt;Azure MCP server&lt;/A&gt;&amp;nbsp;introduces a natural language interface that maps practitioner questions directly to validated KQL queries, eliminating the technical barrier that often limits FinOps analysis to specialized team members.&lt;/P&gt;
&lt;P data-line="52"&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt; The FinOps toolkit also includes Power BI reports, workbooks, alerts, and an optimization engine for advanced analytics and automation. See the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/finops-toolkit-overview?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/finops-toolkit-overview"&gt;FinOps toolkit overview&lt;/A&gt;&amp;nbsp;for the full set of capabilities.&lt;/P&gt;
&lt;H3 data-line="56"&gt;Key capabilities and technical foundation&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;ℹ️ &lt;STRONG&gt;About the FinOps toolkit ecosystem&lt;/STRONG&gt;&lt;BR /&gt;The FinOps toolkit also includes Power BI reports, workbooks, and an optimization engine for advanced analytics and automation. See the &lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/finops-toolkit-overview?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/finops-toolkit-overview"&gt;FinOps toolkit overview&lt;/A&gt;&amp;nbsp;for the full set of capabilities.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="62"&gt;FinOps hubs provide several critical capabilities that enable practitioner success:&lt;/P&gt;
&lt;P data-line="64"&gt;&lt;STRONG&gt;📊 Data foundation&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="66"&gt;
&lt;LI data-line="66"&gt;&lt;STRONG&gt;Centralized cost and usage data&lt;/STRONG&gt;&amp;nbsp;across multiple cloud providers, billing accounts, and organizational units&lt;/LI&gt;
&lt;LI data-line="67"&gt;&lt;STRONG&gt;Native alignment&lt;/STRONG&gt;&amp;nbsp;with the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/finops-framework?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/finops-framework"&gt;FinOps Framework&lt;/A&gt;&amp;nbsp;domains and&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/focus/what-is-focus?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/focus/what-is-focus"&gt;FOCUS&lt;/A&gt;&amp;nbsp;specification&lt;/LI&gt;
&lt;LI data-line="68"&gt;&lt;STRONG&gt;Analytics-ready data model&lt;/STRONG&gt;&amp;nbsp;optimized for performance at scale without complexity overhead&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="70"&gt;&lt;STRONG&gt;🔗 Integration capabilities&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="72"&gt;
&lt;LI data-line="72"&gt;&lt;STRONG&gt;Multiple access patterns:&lt;/STRONG&gt;&amp;nbsp;Power BI integration, Microsoft Fabric compatibility, and direct KQL access for advanced scenarios&lt;/LI&gt;
&lt;LI data-line="73"&gt;&lt;STRONG&gt;Natural language query interface&lt;/STRONG&gt; through Azure MCP server integration with Copilot&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="75"&gt;&lt;STRONG&gt;⚙️ Technical architecture&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="77"&gt;The&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/developer/azure-mcp-server/?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/"&gt;Azure MCP server&lt;/A&gt;&amp;nbsp;acts as the translation layer, implementing the open&amp;nbsp;&lt;A class="lia-external-url" href="https://modelcontextprotocol.io/?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://modelcontextprotocol.io/"&gt;Model Context Protocol&lt;/A&gt; to enable secure communication between AI agents (like GitHub Copilot) and Azure resources. For FinOps scenarios, it specifically provides natural language access to Azure Data Explorer databases containing FinOps hubs data, converting practitioner questions into validated KQL queries while maintaining enterprise authentication and security standards.&lt;/P&gt;
&lt;H2 data-line="81"&gt;Mapping FinOps Framework capabilities to natural language queries&lt;/H2&gt;
&lt;P data-line="83"&gt;The integration supports the complete spectrum of FinOps Framework capabilities through natural language interfaces. Each query type maps to specific Framework domains and validated analytical patterns:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;💡 &lt;STRONG&gt;Quick reference&lt;/STRONG&gt;&lt;BR /&gt;Each prompt category leverages pre-validated queries from the FinOps hubs query catalog, ensuring consistent, accurate results across different practitioners and use cases.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 data-line="89"&gt;🔍 Understand phase capabilities&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;STRONG&gt;Capability&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Natural language example&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Business value&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Cost allocation and accountability&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Show me cost allocation by team for Q1"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Instant breakdown supporting chargeback discussions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Anomaly detection and management&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Find any cost anomalies in the last 30 days"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Proactive identification of budget risks&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Reporting and analytics&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"What are our top resource types by spend?"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Data-driven optimization focus areas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="97"&gt;⚡ Optimize phase capabilities&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;STRONG&gt;Capability&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Natural language example&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Business value&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Rate optimization&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"How much did we save with reservations last month?"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Quantification of commitment discount value&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Workload optimization&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Show me underutilized resources"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Resource efficiency identification&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Governance enforcement&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Show me resources without proper tags"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Policy compliance gaps&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="105"&gt;📈 Operate phase capabilities&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;STRONG&gt;Capability&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Natural language example&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG&gt;Business value&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Forecasting and planning&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Forecast next quarter's cloud costs"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Proactive budget planning support&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Performance tracking&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Show month-over-month cost trends"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;Operational efficiency measurement&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Business value quantification&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;EM&gt;"Calculate our effective savings rate"&lt;/EM&gt;&lt;/td&gt;&lt;td&gt;ROI demonstration for stakeholders&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H2 data-line="115"&gt;Practical implementation: Real-world scenarios and results&lt;/H2&gt;
&lt;P data-line="117"&gt;The following examples demonstrate how natural language queries translate to actionable FinOps insights. Each scenario includes the business context, Framework alignment, query approach, and interpretable results to illustrate the practical value of this integration.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;ℹ️ &lt;STRONG&gt;Sample data notation&lt;/STRONG&gt;&lt;BR /&gt;All cost figures, dates, and resource names in the following examples are illustrative and provided for demonstration purposes. Actual results will vary based on your organization's Azure usage, billing structure, and FinOps hub configuration.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 data-line="123"&gt;Effective cost allocation and accountability&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="125"&gt;&lt;STRONG&gt;FinOps Framework alignment&lt;/STRONG&gt;&lt;BR /&gt;Domain:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/capabilities?WT.mc_id=finops-250605-brettw#understand-usage-and-cost" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/capabilities#understand-usage-and-cost"&gt;Understand usage and cost&lt;/A&gt;&lt;BR /&gt;Capabilities:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/allocation?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/allocation"&gt;Allocation&lt;/A&gt;,&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="130"&gt;&lt;STRONG&gt;Business context&lt;/STRONG&gt;&lt;BR /&gt;Finance teams require accurate cost allocation data to support budget planning and accountability discussions across organizational units.&lt;/P&gt;
&lt;P data-line="133"&gt;&lt;STRONG&gt;Natural language query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What are the top resource groups by cost last month?&lt;/P&gt;
&lt;P data-line="138"&gt;&lt;STRONG&gt;Query results and business impact&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="140"&gt;The natural language prompt maps to a validated allocation query that aggregates effective cost by resource group, providing the foundational data for chargeback and showback processes.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Resource group&lt;/th&gt;&lt;th&gt;Effective cost&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;haven&lt;/td&gt;&lt;td&gt;$36,972.85&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;leap&lt;/td&gt;&lt;td&gt;$15,613.96&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ahbtest&lt;/td&gt;&lt;td&gt;$6,824.54&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;vnet-hub-001&lt;/td&gt;&lt;td&gt;$1,560.13&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;🎯&amp;nbsp;&lt;STRONG&gt;Key takeaway&lt;/STRONG&gt;&lt;BR /&gt;Natural language queries eliminate the need for complex KQL knowledge while maintaining data accuracy. Finance teams can now perform sophisticated cost allocation analysis without technical barriers.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="154"&gt;&lt;STRONG&gt;Learn more:&lt;/STRONG&gt;&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/cost-allocation-introduction?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/cost-allocation-introduction"&gt;Introduction to cost allocation&lt;/A&gt;&lt;/P&gt;
&lt;H3 data-line="158"&gt;Proactive cost anomaly detection and management&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="160"&gt;&lt;STRONG&gt;FinOps Framework alignment&lt;/STRONG&gt;&lt;BR /&gt;Domain:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/capabilities?WT.mc_id=finops-250605-brettw#understand-usage-and-cost" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/capabilities#understand-usage-and-cost"&gt;Understand usage and cost&lt;/A&gt;&lt;BR /&gt;Capabilities: &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/anomalies?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/anomalies"&gt;Anomaly management&lt;/A&gt;,&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="165"&gt;&lt;STRONG&gt;Business context&lt;/STRONG&gt;&lt;BR /&gt;Proactive anomaly detection enables rapid response to unexpected cost changes, supporting budget adherence and operational efficiency.&lt;/P&gt;
&lt;P data-line="168"&gt;&lt;STRONG&gt;Natural language query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Are there any unusual cost spikes or anomalies in the last 12 months?&lt;/P&gt;
&lt;P data-line="173"&gt;&lt;STRONG&gt;Query results and business impact&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="175"&gt;The system applies time series analysis to identify significant cost deviations, automatically calculating percentage changes and flagging potential anomalies for investigation.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Daily cost&lt;/th&gt;&lt;th&gt;% change vs previous day&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;2025-06-03&lt;/td&gt;&lt;td&gt;$971.36&lt;/td&gt;&lt;td&gt;-59.54%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2025-06-01&lt;/td&gt;&lt;td&gt;$2,370.16&lt;/td&gt;&lt;td&gt;-4.38%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2025-04-30&lt;/td&gt;&lt;td&gt;$2,302.10&lt;/td&gt;&lt;td&gt;-5.56%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2025-04-02&lt;/td&gt;&lt;td&gt;$2,458.45&lt;/td&gt;&lt;td&gt;+5.79%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;⚠️ &lt;STRONG&gt;Warning: &lt;/STRONG&gt;&lt;STRONG&gt;Analysis insight&lt;/STRONG&gt;&lt;BR /&gt;The 59% cost reduction on June 3rd indicates a significant operational change, such as workload migration or resource decommissioning, requiring validation to ensure expected behavior.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;🎯&amp;nbsp;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Key takeaway&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="189"&gt;Automated anomaly detection enables proactive cost management by identifying unusual spending patterns before they impact budgets, supporting rapid response to operational changes.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="193"&gt;Learn more:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/anomalies?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/anomalies"&gt;Anomaly management&lt;/A&gt;&lt;/P&gt;
&lt;H3 data-line="197"&gt;Accurate financial forecasting and budget planning&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="199"&gt;&lt;STRONG&gt;FinOps Framework alignment&lt;/STRONG&gt;&lt;BR /&gt;Domain:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/capabilities?WT.mc_id=finops-250605-brettw#quantify-business-value" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/capabilities#quantify-business-value"&gt;Quantify business value&lt;/A&gt;&lt;BR /&gt;Capabilities:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/quantify/forecasting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/quantify/forecasting"&gt;Forecasting&lt;/A&gt;,&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/quantify/planning?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/quantify/planning"&gt;Planning and estimating&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="204"&gt;&lt;STRONG&gt;Business context&lt;/STRONG&gt;&lt;BR /&gt;Accurate financial forecasting supports budget planning processes and enables proactive capacity and cost management decisions.&lt;/P&gt;
&lt;P data-line="207"&gt;&lt;STRONG&gt;Natural language query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Forecast total cloud cost for the next 90 days based on the last 12 months.&lt;/P&gt;
&lt;P data-line="212"&gt;&lt;STRONG&gt;Query results and business impact&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="214"&gt;The forecasting algorithm analyzes historical spending patterns and applies trend analysis to project future costs, providing both daily estimates and aggregate totals for planning purposes.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Date&lt;/th&gt;&lt;th&gt;Forecasted cost&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;2025-06-04&lt;/td&gt;&lt;td&gt;$2,401.61&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2025-07-01&lt;/td&gt;&lt;td&gt;$2,401.61&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2025-08-01&lt;/td&gt;&lt;td&gt;$2,401.61&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2025-09-01&lt;/td&gt;&lt;td&gt;$2,401.61&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="224"&gt;&lt;STRONG&gt;Total forecasted 90-day spend:&lt;/STRONG&gt;&amp;nbsp;$216,145.24&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;🎯 &lt;STRONG&gt;Key takeaway&lt;/STRONG&gt;&lt;BR /&gt;Natural language forecasting queries provide accurate financial projections based on validated historical analysis, enabling confident budget planning without requiring data science expertise.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="230"&gt;Learn more:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/quantify/forecasting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/quantify/forecasting"&gt;Forecasting&lt;/A&gt;&lt;/P&gt;
&lt;H3 data-line="234"&gt;Reporting and analytics capabilities&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="236"&gt;&lt;STRONG&gt;FinOps Framework alignment&lt;/STRONG&gt;&lt;BR /&gt;Domain:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/capabilities?WT.mc_id=finops-250605-brettw#understand-usage-and-cost" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/capabilities#understand-usage-and-cost"&gt;Understand usage and cost&lt;/A&gt;&lt;BR /&gt;Capabilities:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="241"&gt;&lt;STRONG&gt;Business context&lt;/STRONG&gt;&lt;BR /&gt;Executive reporting requires consistent, reliable cost trend analysis to support strategic decision-making and budget performance tracking.&lt;/P&gt;
&lt;P data-line="244"&gt;&lt;STRONG&gt;Natural language query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Show monthly billed and effective cost trends for the last 12 months.&lt;/P&gt;
&lt;P data-line="249"&gt;&lt;STRONG&gt;Query results and business impact&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Month&lt;/th&gt;&lt;th&gt;Billed cost&lt;/th&gt;&lt;th&gt;Effective cost&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;2024-06&lt;/td&gt;&lt;td&gt;$46,066.39&lt;/td&gt;&lt;td&gt;$46,773.85&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2024-07&lt;/td&gt;&lt;td&gt;$72,951.41&lt;/td&gt;&lt;td&gt;$74,004.08&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2024-08&lt;/td&gt;&lt;td&gt;$73,300.31&lt;/td&gt;&lt;td&gt;$74,401.81&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2024-09&lt;/td&gt;&lt;td&gt;$71,886.30&lt;/td&gt;&lt;td&gt;$72,951.26&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="259"&gt;Learn more:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/P&gt;
&lt;H3 data-line="263"&gt;Resource optimization analysis&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="265"&gt;&lt;STRONG&gt;FinOps Framework alignment&lt;/STRONG&gt;&lt;BR /&gt;Domain:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/capabilities?WT.mc_id=finops-250605-brettw#optimize-usage-and-cost" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/capabilities#optimize-usage-and-cost"&gt;Optimize usage and cost&lt;/A&gt;&lt;BR /&gt;Capabilities: &lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/optimize/workloads?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/optimize/workloads"&gt;Workload optimization&lt;/A&gt;,&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P data-line="270"&gt;&lt;STRONG&gt;Business context&lt;/STRONG&gt;&lt;BR /&gt;Prioritizing optimization efforts requires understanding which resource types drive the most cost, enabling focused improvement initiatives with maximum business impact.&lt;/P&gt;
&lt;P data-line="273"&gt;&lt;STRONG&gt;Natural language query&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;What are the top resource types by cost last month?&lt;/P&gt;
&lt;P data-line="278"&gt;&lt;STRONG&gt;Query results and business impact&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Resource type&lt;/th&gt;&lt;th&gt;Effective cost&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Fabric Capacity&lt;/td&gt;&lt;td&gt;$34,283.52&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Virtual machine scale set&lt;/td&gt;&lt;td&gt;$15,155.59&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SQL database&lt;/td&gt;&lt;td&gt;$2,582.99&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Virtual machine&lt;/td&gt;&lt;td&gt;$2,484.34&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;...&lt;/td&gt;&lt;td&gt;...&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="288"&gt;Learn more:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/optimize/workloads?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/optimize/workloads"&gt;Workload optimization&lt;/A&gt;&lt;/P&gt;
&lt;H2 data-line="292"&gt;Implementation methodology&lt;/H2&gt;
&lt;P data-line="294"&gt;This section provides a systematic approach to implementing natural language FinOps analysis using the technical foundation established above.&lt;/P&gt;
&lt;H3 data-line="296"&gt;Prerequisites and environment validation&lt;/H3&gt;
&lt;P data-line="301"&gt;Before proceeding with implementation, ensure you have:&lt;/P&gt;
&lt;P data-line="303"&gt;✅ Azure subscription with appropriate FinOps hub deployment permissions&lt;BR /&gt;✅ Node.js runtime environment (required by Azure MCP Server)&lt;BR /&gt;✅ Visual Studio Code with GitHub Copilot extension&lt;BR /&gt;✅ Azure CLI, Azure PowerShell, or Azure Developer CLI authentication configured&lt;/P&gt;
&lt;H4 data-line="308"&gt;Access validation methodology&lt;/H4&gt;
&lt;P data-line="310"&gt;&lt;STRONG&gt;Step 1: Verify FinOps hub deployment&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="312"&gt;Confirm hub deployment status and data ingestion through the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/hubs/deploy?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/hubs/deploy"&gt;FinOps hubs setup guide&lt;/A&gt;&lt;/P&gt;
&lt;P data-line="314"&gt;&lt;STRONG&gt;Step 2: Validate database access&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="316"&gt;Test connectivity to the hub database using Azure Data Explorer web application or Azure portal&lt;/P&gt;
&lt;P data-line="318"&gt;&lt;STRONG&gt;Step 3: Confirm schema availability&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="320"&gt;Verify core functions (Costs, Prices) and databases (Hub, Ingestion) are accessible with current data&lt;/P&gt;
&lt;H4 data-line="320"&gt;Expected Database Structure&lt;/H4&gt;
&lt;UL data-line="325"&gt;
&lt;LI data-line="325"&gt;&lt;STRONG&gt;Hub database:&lt;/STRONG&gt;&amp;nbsp;Public-facing functions including&amp;nbsp;Costs,&amp;nbsp;Prices, and version-specific functions (e.g.,&amp;nbsp;Costs_v1_0)&lt;/LI&gt;
&lt;LI data-line="326"&gt;&lt;STRONG&gt;Ingestion database:&lt;/STRONG&gt;&amp;nbsp;Raw data tables, configuration settings (HubSettings,&amp;nbsp;HubScopes), and open data tables (PricingUnits)&lt;/LI&gt;
&lt;LI data-line="327"&gt;&lt;STRONG&gt;FOCUS-aligned data:&lt;/STRONG&gt;&amp;nbsp;All datasets conform to FinOps Open Cost and Usage Specification standards&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="329"&gt;Learn more:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/hubs/template?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/hubs/template"&gt;FinOps hubs template details&lt;/A&gt;&lt;/P&gt;
&lt;H3 data-line="331"&gt;Azure MCP server configuration&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P data-line="333"&gt;&lt;STRONG&gt;ℹ️ What is Azure MCP Server?&lt;/STRONG&gt;&lt;BR /&gt;The&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/developer/azure-mcp-server/?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/"&gt;Azure Model Context Protocol (MCP) server&lt;/A&gt;&amp;nbsp;is a Microsoft-provided implementation that enables AI agents and clients to interact with Azure resources through natural language commands. It implements the open&amp;nbsp;&lt;A class="lia-external-url" href="https://modelcontextprotocol.io/?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://modelcontextprotocol.io/"&gt;Model Context Protocol&lt;/A&gt;&amp;nbsp;standard to provide secure, structured access to Azure services including Azure Data Explorer (FinOps hub databases).&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4 data-line="337"&gt;Key capabilities and service support&lt;/H4&gt;
&lt;P data-line="339"&gt;The Azure MCP server provides comprehensive Azure service integration, particularly relevant for FinOps analysis:&lt;/P&gt;
&lt;P data-line="341"&gt;&lt;STRONG&gt;🔍 FinOps-relevant services&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="342"&gt;
&lt;LI data-line="342"&gt;&lt;STRONG&gt;Azure Data Explorer:&lt;/STRONG&gt;&amp;nbsp;Execute KQL queries against FinOps hub databases&lt;/LI&gt;
&lt;LI data-line="343"&gt;&lt;STRONG&gt;Azure Monitor:&lt;/STRONG&gt;&amp;nbsp;Query logs and metrics for cost analysis&lt;/LI&gt;
&lt;LI data-line="344"&gt;&lt;STRONG&gt;Resource groups:&lt;/STRONG&gt;&amp;nbsp;List and analyze organizational cost structures&lt;/LI&gt;
&lt;LI data-line="345"&gt;&lt;STRONG&gt;Subscription management:&lt;/STRONG&gt;&amp;nbsp;Access subscription-level cost data&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="347"&gt;&lt;STRONG&gt;🔧 Additional Azure services&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="348"&gt;
&lt;LI data-line="348"&gt;Azure Storage, Cosmos DB, Key Vault, Service Bus, and 10+ other services&lt;/LI&gt;
&lt;LI data-line="349"&gt;Full list available in the&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/developer/azure-mcp-server/tools/?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/tools/"&gt;Azure MCP Server tools documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 data-line="351"&gt;Installation methodology&lt;/H4&gt;
&lt;P&gt;The Azure MCP Server is available as an NPM package and VS Code extension. For FinOps scenarios, we recommend the VS Code extension approach for seamless integration with GitHub Copilot.&lt;/P&gt;
&lt;P data-line="357"&gt;&lt;STRONG&gt;Option 1: VS Code extension (recommended)&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL data-line="359"&gt;
&lt;LI data-line="359"&gt;Install the&amp;nbsp;&lt;A class="lia-external-url" href="https://marketplace.visualstudio.com/items?WT.mc_id=finops-250605-brettw&amp;amp;itemName=Microsoft.azure-mcp-server" target="_blank" rel="noopener" data-href="https://marketplace.visualstudio.com/items?itemName=Microsoft.azure-mcp-server"&gt;Azure MCP server extension&lt;/A&gt;&amp;nbsp;from VS Code Marketplace&lt;/LI&gt;
&lt;LI data-line="360"&gt;The extension automatically configures the server in your VS Code settings&lt;/LI&gt;
&lt;LI data-line="361"&gt;Open GitHub Copilot and activate Agent Mode to access Azure tools&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="363"&gt;&lt;STRONG&gt;Option 2: Manual configuration&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="365"&gt;Add the following to your MCP client configuration:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
  "servers": {
    "Azure MCP Server": {
      "command": "npx",
      "args": ["-y", "@azure/mcp@latest", "server", "start"]
    }
  }
}&lt;/LI-CODE&gt;
&lt;H4 data-line="383"&gt;Authentication requirements&lt;/H4&gt;
&lt;P data-line="388"&gt;Azure MCP Server uses&amp;nbsp;&lt;STRONG&gt;Entra ID&lt;/STRONG&gt;&amp;nbsp;through the Azure Identity library, following Azure authentication best practices. It supports:&lt;/P&gt;
&lt;UL data-line="390"&gt;
&lt;LI data-line="390"&gt;&lt;STRONG&gt;Azure CLI:&lt;/STRONG&gt;&amp;nbsp;az login&amp;nbsp;(recommended for development)&lt;/LI&gt;
&lt;LI data-line="391"&gt;&lt;STRONG&gt;Azure PowerShell:&lt;/STRONG&gt;&amp;nbsp;Connect-AzAccount&lt;/LI&gt;
&lt;LI data-line="392"&gt;&lt;STRONG&gt;Azure Developer CLI:&lt;/STRONG&gt;&amp;nbsp;azd auth login&lt;/LI&gt;
&lt;LI data-line="393"&gt;&lt;STRONG&gt;Managed identity:&lt;/STRONG&gt;&amp;nbsp;For production deployments&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="395"&gt;The server uses&amp;nbsp;DefaultAzureCredential&amp;nbsp;and automatically discovers the best available authentication method for your environment.&lt;/P&gt;
&lt;H4 data-line="397"&gt;Technical validation steps&lt;/H4&gt;
&lt;P data-line="399"&gt;&lt;STRONG&gt;Step 1: Authentication verification&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="401"&gt;Confirm successful login to supported Azure tools&lt;/P&gt;
&lt;P data-line="403"&gt;&lt;STRONG&gt;Step 2: Resource discovery&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="405"&gt;Validate MCP Server can access your Azure subscription and FinOps hub resources&lt;/P&gt;
&lt;P data-line="407"&gt;&lt;STRONG&gt;Step 3: Database connectivity&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-line="409"&gt;Test query execution against FinOps hub databases&lt;/P&gt;
&lt;H3 data-line="411"&gt;Integration with development environment&lt;/H3&gt;
&lt;P data-line="413"&gt;&lt;STRONG&gt;VS Code configuration requirements:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="414"&gt;
&lt;LI data-line="414"&gt;GitHub Copilot extension with Agent Mode capability&lt;/LI&gt;
&lt;LI data-line="415"&gt;Azure MCP Server installation and configuration&lt;/LI&gt;
&lt;LI data-line="416"&gt;&lt;A class="lia-external-url" href="https://github.com/microsoft/finops-toolkit/releases/download/v0.11/finops-hub-copilot-v0.11.zip" target="_blank" rel="noopener" data-href="https://github.com/microsoft/finops-toolkit/releases/download/v0.11/finops-hub-copilot-v0.11.zip"&gt;FinOps hubs copilot instructions and configuration files&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="418"&gt;The&amp;nbsp;&lt;STRONG&gt;FinOps Hub Copilot v0.11&lt;/STRONG&gt;&amp;nbsp;release provides pre-configured GitHub Copilot instructions specifically tuned for FinOps analysis. This release includes:&lt;/P&gt;
&lt;UL data-line="420"&gt;
&lt;LI data-line="420"&gt;&lt;STRONG&gt;AI agent instructions&lt;/STRONG&gt;&amp;nbsp;optimized for FinOps Framework capabilities&lt;/LI&gt;
&lt;LI data-line="421"&gt;&lt;STRONG&gt;GitHub Copilot configuration files&lt;/STRONG&gt;&amp;nbsp;for VS Code Agent Mode&lt;/LI&gt;
&lt;LI data-line="422"&gt;&lt;STRONG&gt;Validated query patterns&lt;/STRONG&gt;&amp;nbsp;mapped to common FinOps scenarios&lt;/LI&gt;
&lt;LI data-line="423"&gt;&lt;STRONG&gt;Azure MCP Server integration guides&lt;/STRONG&gt;&amp;nbsp;for connecting to FinOps hub data&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="425"&gt;&lt;STRONG&gt;Verification methodology:&lt;/STRONG&gt;&lt;/P&gt;
&lt;OL data-line="427"&gt;
&lt;LI data-line="427"&gt;Open Copilot Chat interface (Ctrl+Shift+I&amp;nbsp;/&amp;nbsp;Cmd+Shift+I)&lt;/LI&gt;
&lt;LI data-line="428"&gt;Activate Agent Mode and select tools icon to verify Azure MCP Server availability&lt;/LI&gt;
&lt;LI data-line="429"&gt;Execute connectivity test:&amp;nbsp;"What Azure resources do I have access to?"&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-line="431"&gt;&lt;STRONG&gt;Expected response validation:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="433"&gt;
&lt;LI data-line="433"&gt;Successful authentication confirmation&lt;/LI&gt;
&lt;LI data-line="434"&gt;Azure subscription and resource enumeration&lt;/LI&gt;
&lt;LI data-line="435"&gt;FinOps hub database connectivity status&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-line="437"&gt;Progressive query validation&lt;/H3&gt;
&lt;P data-line="439"&gt;&lt;STRONG&gt;Foundational test queries:&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Complexity level&lt;/th&gt;&lt;th&gt;Validation query&lt;/th&gt;&lt;th&gt;Expected behavior&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Basic&lt;/td&gt;&lt;td&gt;"Show me total cost for last month"&lt;/td&gt;&lt;td&gt;Single aggregate value with currency formatting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Intermediate&lt;/td&gt;&lt;td&gt;"What are my top 10 resource groups by cost?"&lt;/td&gt;&lt;td&gt;Tabular results with proper ranking&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Advanced&lt;/td&gt;&lt;td&gt;"Find any costs over $1000 in the last week"&lt;/td&gt;&lt;td&gt;Filtered results with anomaly identification&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="447"&gt;&lt;STRONG&gt;Query execution validation:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="449"&gt;
&lt;LI data-line="449"&gt;KQL translation accuracy against FinOps hub schema&lt;/LI&gt;
&lt;LI data-line="450"&gt;Result set formatting and data type handling&lt;/LI&gt;
&lt;LI data-line="451"&gt;Error handling and user feedback mechanisms&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="455"&gt;Operational best practices for enterprise implementation&lt;/H2&gt;
&lt;H3 data-line="457"&gt;Query optimization and performance considerations&lt;/H3&gt;
&lt;P data-line="459"&gt;&lt;STRONG&gt;Data volume management:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="460"&gt;
&lt;LI data-line="460"&gt;Implement temporal filtering to prevent timeout scenarios (Azure Data Explorer 64MB result limit)&lt;/LI&gt;
&lt;LI data-line="461"&gt;Use summarization functions for large datasets rather than detailed row-level analysis&lt;/LI&gt;
&lt;LI data-line="462"&gt;Apply resource-level filters when analyzing specific environments or subscriptions&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="464"&gt;&lt;STRONG&gt;Schema consistency validation:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="465"&gt;
&lt;LI data-line="465"&gt;Reference the FinOps hub database guide for authoritative column definitions&lt;/LI&gt;
&lt;LI data-line="466"&gt;Verify data freshness through ingestion timestamp validation&lt;/LI&gt;
&lt;LI data-line="467"&gt;Validate currency normalization across multi-subscription environments&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="469"&gt;&lt;STRONG&gt;Query pattern optimization:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="470"&gt;
&lt;LI data-line="470"&gt;Leverage the FinOps hub query catalog for validated analytical patterns&lt;/LI&gt;
&lt;LI data-line="471"&gt;Customize&amp;nbsp;costs-enriched-base&amp;nbsp;query foundation for organization-specific requirements&lt;/LI&gt;
&lt;LI data-line="472"&gt;Implement proper time zone handling for global operational environments&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-line="474"&gt;Security and access management&lt;/H3&gt;
&lt;P data-line="476"&gt;&lt;STRONG&gt;Authentication patterns:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="477"&gt;
&lt;LI data-line="477"&gt;Utilize Azure CLI integrated authentication for development environments&lt;/LI&gt;
&lt;LI data-line="478"&gt;Implement service principal authentication for production automation scenarios&lt;/LI&gt;
&lt;LI data-line="479"&gt;Maintain principle of least privilege for database access permissions&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="481"&gt;&lt;STRONG&gt;Data governance considerations:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="483"&gt;
&lt;LI data-line="483"&gt;Ensure compliance with organizational data classification policies&lt;/LI&gt;
&lt;LI data-line="484"&gt;Implement appropriate logging for cost analysis queries and results&lt;/LI&gt;
&lt;LI data-line="485"&gt;Validate that natural language prompts don't inadvertently expose sensitive financial data&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 data-line="489"&gt;Comprehensive query patterns by analytical domain&lt;/H2&gt;
&lt;P data-line="491"&gt;The following reference provides validated natural language prompts mapped to specific FinOps Framework capabilities and proven KQL implementations.&lt;/P&gt;
&lt;P data-line="493"&gt;&lt;STRONG&gt;Technical note:&lt;/STRONG&gt;&amp;nbsp;Each pattern references validated queries from the FinOps hub query catalog. Verify schema compatibility using the FinOps hub database guide before implementation.&lt;/P&gt;
&lt;H3 data-line="495"&gt;Cost visibility and allocation patterns&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Analytical requirement&lt;/th&gt;&lt;th&gt;FinOps Framework alignment&lt;/th&gt;&lt;th&gt;Validated natural language query&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Executive cost trend reporting&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show monthly billed and effective cost trends for the last 12 months."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Resource group cost ranking&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/allocation?WT.mc_id=finops-250605-brettw" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/allocation" target="_blank"&gt;Allocation&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"What are the top resource groups by cost last month?"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Quarterly financial reporting&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/allocation?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/allocation"&gt;Allocation&lt;/A&gt;&amp;nbsp;/&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show quarterly cost by resource group for the last 3 quarters."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Service-level cost analysis&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/visibility"&gt;Reporting and analytics&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Which Azure services drove the most cost last month?"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Organizational cost allocation&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/allocation?WT.mc_id=finops-250605-brettw" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/allocation" target="_blank"&gt;Allocation&lt;/A&gt;&amp;nbsp;/&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting" target="_blank"&gt;Reporting and analytics&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show cost allocation by team and product for last quarter."&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="505"&gt;Optimization and efficiency patterns&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Analytical requirement&lt;/th&gt;&lt;th&gt;FinOps Framework alignment&lt;/th&gt;&lt;th&gt;Validated natural language query&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Resource optimization prioritization&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/optimize/workloads?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/optimize/workloads"&gt;Workload optimization&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"What are the top resource types by cost last month?"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Commitment discount analysis&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/optimize/rates?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/optimize/rates"&gt;Rate optimization&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show reservation recommendations and break-even analysis for our environment."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Underutilized resource identification&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/optimize/workloads?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/optimize/workloads"&gt;Workload optimization&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Find resources with low utilization that could be optimized or decommissioned."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Savings plan effectiveness&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/optimize/rates?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/optimize/rates"&gt;Rate optimization&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"How much did we save with savings plans compared to pay-as-you-go pricing?"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Tag compliance monitoring&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/ingestion?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/data-ingestion"&gt;Data ingestion&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show me resources without required cost center tags."&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="515"&gt;Anomaly detection and monitoring patterns&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Analytical requirement&lt;/th&gt;&lt;th&gt;FinOps Framework alignment&lt;/th&gt;&lt;th&gt;Validated natural language query&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Cost spike identification&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/anomalies?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/anomalies"&gt;Anomaly management&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Find any unusual cost spikes or anomalies in the last 30 days."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Budget variance analysis&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/quantify/forecasting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/quantify/forecasting"&gt;Budgeting&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show actual vs. budgeted costs by resource group this quarter."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Trending analysis&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/reporting?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/reporting"&gt;Reporting and analytics&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Identify resources with consistently increasing costs over the last 6 months."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Threshold monitoring&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/anomalies?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/anomalies"&gt;Anomaly management&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Alert me to any single resources costing more than $5,000 monthly."&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-line="524"&gt;Governance and compliance patterns&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Analytical Requirement&lt;/th&gt;&lt;th&gt;FinOps Framework Alignment&lt;/th&gt;&lt;th&gt;Validated Natural Language Query&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Policy compliance validation&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/manage/governance?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/manage/practice-operations"&gt;Policy and governance&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Show resources that don't comply with our tagging policies."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Approved service usage&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/manage/governance?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/manage/policy-governance"&gt;Policy and governance&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"List any non-approved services being used across our subscriptions."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Regional compliance monitoring&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/manage/governance?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/data-ingestion"&gt;Policy and governance&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Verify all resources are deployed in approved regions only."&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Cost center accountability&lt;/td&gt;&lt;td&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/manage/invoicing-chargeback?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/manage/showback-chargeback"&gt;Invoicing and chargeback&lt;/A&gt;&lt;/td&gt;&lt;td&gt;"Generate chargeback reports by cost center for last quarter."&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-line="533"&gt;&lt;STRONG&gt;Key takeaway&lt;/STRONG&gt;: These validated query patterns provide a comprehensive foundation for FinOps analysis across all Framework capabilities. Use them as templates and customize for your organization's specific requirements.&lt;/P&gt;
&lt;H2 data-line="537"&gt;Troubleshooting and optimization guidance&lt;/H2&gt;
&lt;H3 data-line="539"&gt;Common query performance issues&lt;/H3&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;⚠️ &lt;STRONG&gt;Warning: &lt;/STRONG&gt;&lt;STRONG&gt;Performance considerations&lt;/STRONG&gt;&lt;BR /&gt;Azure Data Explorer has a 64MB result limit by default. Proper query optimization avoids timeouts and ensures reliable performance. If using Power BI, use DirectQuery to connect to your data.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4 data-line="545"&gt;Large dataset timeouts&lt;/H4&gt;
&lt;P data-line="547"&gt;&lt;STRONG&gt;Symptom:&lt;/STRONG&gt;&amp;nbsp;Queries failing with timeout errors on large datasets&lt;/P&gt;
&lt;P data-line="549"&gt;&lt;STRONG&gt;Solution:&lt;/STRONG&gt;&amp;nbsp;Add temporal filters&lt;/P&gt;
&lt;P&gt;✅ Recommended: "Show costs for last 30 days" ❌ Avoid: "Show all costs"&lt;/P&gt;
&lt;P data-line="556"&gt;&lt;STRONG&gt;Framework alignment:&lt;/STRONG&gt;&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/framework/understand/data-ingestion?WT.mc_id=finops-250605-brettw" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/data-ingestion"&gt;Data ingestion&lt;/A&gt;&lt;/P&gt;
&lt;H4 data-line="558"&gt;Memory limit exceptions&lt;/H4&gt;
&lt;P data-line="560"&gt;&lt;STRONG&gt;Symptom:&lt;/STRONG&gt;&amp;nbsp;Exceeding Azure Data Explorer 64MB result limit&lt;/P&gt;
&lt;P data-line="562"&gt;&lt;STRONG&gt;Solution:&lt;/STRONG&gt;&amp;nbsp;Use aggregation functions&lt;/P&gt;
&lt;P&gt;✅ Recommended: "Summarize costs by month" ❌ Avoid: Daily granular data for large time periods&lt;/P&gt;
&lt;P data-line="569"&gt;&lt;STRONG&gt;Best practice:&lt;/STRONG&gt;&amp;nbsp;Implement progressive drill-down from summary to detail&lt;/P&gt;
&lt;H4 data-line="571"&gt;Schema validation errors&lt;/H4&gt;
&lt;P data-line="573"&gt;&lt;STRONG&gt;Symptom:&lt;/STRONG&gt;&amp;nbsp;Queries returning empty results or unexpected columns&lt;/P&gt;
&lt;P data-line="575"&gt;&lt;STRONG&gt;Solution:&lt;/STRONG&gt;&amp;nbsp;Verify hub schema version compatibility using the database guide&lt;/P&gt;
&lt;P data-line="577"&gt;&lt;STRONG&gt;Validation:&lt;/STRONG&gt;&amp;nbsp;Test with known queries from the query catalog&lt;/P&gt;
&lt;H3 data-line="579"&gt;Query optimization best practices&lt;/H3&gt;
&lt;H4 data-line="584"&gt;Temporal filtering&lt;/H4&gt;
&lt;P&gt;✅ Recommended: "Show monthly costs for Q1 2025" ❌ Avoid: "Show all historical costs by day"&lt;/P&gt;
&lt;H4 data-line="590"&gt;Aggregation-first approach&lt;/H4&gt;
&lt;P&gt;✅ Recommended: "Top 10 resource groups by cost" ❌ Avoid: "All resources with individual costs"&lt;/P&gt;
&lt;H4 data-line="596"&gt;Multi-subscription handling&lt;/H4&gt;
&lt;P&gt;✅ Recommended: "Costs by subscription for production environment" ❌ Avoid: "All costs across all subscriptions without filtering"&lt;/P&gt;
&lt;H2 data-line="642"&gt;Conclusion&lt;/H2&gt;
&lt;P data-line="644"&gt;The integration of FinOps hubs with natural language querying through GitHub Copilot and Azure MCP Server represents a transformative advancement in cloud financial management accessibility. By eliminating technical barriers traditionally associated with cost analysis, this approach enables broader organizational adoption of FinOps practices while maintaining analytical rigor and data accuracy.&lt;/P&gt;
&lt;H3 data-line="646"&gt;Key takeaways for implementation success&lt;/H3&gt;
&lt;H4 data-line="651"&gt;Foundation building&lt;/H4&gt;
&lt;P data-line="653"&gt;&lt;STRONG&gt;Start with the basics:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="655"&gt;
&lt;LI data-line="655"&gt;Ensure robust FinOps hub deployment with clean, consistent data ingestion&lt;/LI&gt;
&lt;LI data-line="656"&gt;Validate authentication and connectivity before advancing to complex scenarios&lt;/LI&gt;
&lt;LI data-line="657"&gt;Begin with basic queries and progressively increase complexity as team familiarity grows&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 data-line="659"&gt;Business value focus&lt;/H4&gt;
&lt;P data-line="661"&gt;&lt;STRONG&gt;Align with organizational needs:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="663"&gt;
&lt;LI data-line="663"&gt;Align query patterns with organizational FinOps maturity and immediate business needs&lt;/LI&gt;
&lt;LI data-line="664"&gt;Prioritize use cases that demonstrate clear ROI and operational efficiency gains&lt;/LI&gt;
&lt;LI data-line="665"&gt;Establish feedback loops with finance and business stakeholders to refine analytical approaches&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 data-line="667"&gt;Scale and governance planning&lt;/H4&gt;
&lt;P data-line="669"&gt;&lt;STRONG&gt;Design for enterprise success:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="671"&gt;
&lt;LI data-line="671"&gt;Implement appropriate access controls and data governance from the beginning&lt;/LI&gt;
&lt;LI data-line="672"&gt;Design query patterns that perform well at organizational scale&lt;/LI&gt;
&lt;LI data-line="673"&gt;Establish monitoring and alerting for cost anomalies and policy compliance&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-line="675"&gt;Future considerations&lt;/H3&gt;
&lt;P data-line="677"&gt;As natural language interfaces continue to evolve, organizations should prepare for enhanced capabilities including:&lt;/P&gt;
&lt;P data-line="679"&gt;&lt;STRONG&gt;🔮 Advanced analytics&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="681"&gt;
&lt;LI data-line="681"&gt;&lt;STRONG&gt;Multi-modal analysis:&lt;/STRONG&gt;&amp;nbsp;Integration of cost data with performance metrics, compliance reports, and business KPIs&lt;/LI&gt;
&lt;LI data-line="682"&gt;&lt;STRONG&gt;Predictive analytics:&lt;/STRONG&gt;&amp;nbsp;Advanced forecasting and scenario modeling through conversational interfaces&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="684"&gt;&lt;STRONG&gt;🤖 Automated intelligence&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL data-line="686"&gt;
&lt;LI data-line="686"&gt;&lt;STRONG&gt;Automated optimization:&lt;/STRONG&gt;&amp;nbsp;Natural language-driven resource rightsizing and commitment recommendations&lt;/LI&gt;
&lt;LI data-line="687"&gt;&lt;STRONG&gt;Cross-platform intelligence:&lt;/STRONG&gt;&amp;nbsp;Unified analysis across cloud providers, SaaS platforms, and on-premises infrastructure&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-line="699"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-line="699"&gt;The democratization of FinOps analytics through natural language interfaces positions organizations to make faster, more informed decisions about cloud investments while fostering a culture of cost consciousness across all teams. Success with this integration requires both technical implementation excellence and organizational change management to maximize adoption and business impact.&lt;/P&gt;
&lt;P data-line="701"&gt;Learn more about the FinOps toolkit and stay updated on new capabilities at the &lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/finops-toolkit-overview" target="_blank" rel="noopener" data-href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/finops-toolkit-overview"&gt;FinOps toolkit website&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Tue, 10 Jun 2025 10:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/a-practitioner-s-guide-to-accelerating-finops-with-github/ba-p/4420302</guid>
      <dc:creator>Brett_Wilson</dc:creator>
      <dc:date>2025-06-10T10:00:00Z</dc:date>
    </item>
    <item>
      <title>Microsoft Cost Management updates—May 2025 (summary)</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/microsoft-cost-management-updates-may-2025-summary/ba-p/4421930</link>
      <description>&lt;P&gt;Here's a quick run-down of the Cost Management updates for May 2025:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;View estimated carbon emissions in Azure Migrate&lt;/LI&gt;
&lt;LI&gt;Generally available: Azure Carbon Optimization&lt;/LI&gt;
&lt;LI&gt;Microsoft Customer Agreement cost and usage data quality improvements&lt;/LI&gt;
&lt;LI&gt;Limited preview: Export to Microsoft Fabric&lt;/LI&gt;
&lt;LI&gt;New ways to save money:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;Generally available: Enhancements to Purchase-Related Cost Details&lt;/LI&gt;
&lt;LI&gt;Generally available: Smart VM Defaults in AKS&lt;/LI&gt;
&lt;LI&gt;Generally available: Free Azure SQL Managed Instance Offer&lt;/LI&gt;
&lt;LI&gt;Generally available: Free Azure SQL Managed Instance Offer&lt;/LI&gt;
&lt;LI&gt;Preview: Network Optimized Azure Virtual Machines&lt;/LI&gt;
&lt;/UL&gt;
&lt;/UL&gt;
&lt;P&gt;This is just a quick summary. For the full details, please see&amp;nbsp;&lt;A href="https://azure.microsoft.com/en-us/blog/microsoft-cost-management-updates-may-2025" target="_blank"&gt;Microsoft Cost Management updates—May 2025&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 09 Jun 2025 10:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/microsoft-cost-management-updates-may-2025-summary/ba-p/4421930</guid>
      <dc:creator>micflan</dc:creator>
      <dc:date>2025-06-09T10:00:00Z</dc:date>
    </item>
    <item>
      <title>Understanding the Total Cost of Ownership</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/understanding-the-total-cost-of-ownership/ba-p/4419195</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Whether you're just beginning your journey in Azure or are already managing workloads in the cloud, it's essential to ground your strategy in &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/cloud-adoption-framework/?WT.mc_id=finops-62025-socuff" target="_blank" rel="noopener"&gt;proven guidance&lt;/A&gt;. The Microsoft Cloud Adoption Framework for Azure offers a comprehensive set of best practices, documentation, and tools to help you align your cloud adoption efforts with business goals. One of the foundational steps in this journey is understanding the financial implications of cloud migration.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;When evaluating the migration of workloads to Azure, calculating the Total Cost of Ownership (TCO) is a crucial step. TCO is a comprehensive metric that includes all cost components over the life of the resource. A well-constructed TCO analysis can provide valuable insights that aid in decision-making and drive financial efficiencies. By understanding the comprehensive costs associated with moving to Azure, you can make informed choices that align with your business goals and budget.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Here is a breakdown of the main elements that you need to build your own TCO:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;1. Current infrastructure configuration:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Servers: details about your existing servers, including the number of servers, their specifications (CPU, memory, storage), and operating systems.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Databases: information about your current databases, such as the type, size, and any associated licensing costs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Storage: type and amount of storage you are currently using, including any redundancy or backup solutions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Network Traffic: Account for outbound network traffic and any associated costs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;2. Azure Environment Configuration:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Virtual Machines (VMs): appropriate Azure VMs that match your current server specifications. This has to be based on CPU, memory, storage, and region.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Storage Options: type of storage (e.g., Standard HDD, Premium SSD), access tiers, and redundancy options that align with your needs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Networking: networking components, including virtual networks, load balancers, and bandwidth requirements.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;3. Operational Costs:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Power and Cooling: Estimate the costs associated with power and cooling for your on-premises infrastructure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;IT Labor: Include the costs of IT labor required to manage and maintain your current infrastructure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-contrast="auto"&gt;Software Licensing: Account for any software licensing costs that will be incurred in both the current and Azure environments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Once you have more clarity of these inputs you can complement your analysis with other tools depending on your needs. The Azure Pricing Calculator is well suited to providing granular cost estimation for different Azure services and products. However, if the intent is to estimate cost and savings during migrations, Azure Migrate business case feature should be the preferred approach as it will allow the user to perform detailed financial analysis (TCO/ROI) for the best path forward and assess readiness to move workloads to Azure with confidence. &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Understand your Azure costs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The &lt;/SPAN&gt;&lt;A class="lia-external-url" href="https://azure.microsoft.com/pricing/calculator/" target="_blank" rel="noopener"&gt;Azure pricing calculator&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; is a free cost management tool that allows users to understand and estimate costs of Azure Services and products. It serves as the only unauthenticated experience that allows you to configure and budget the expected cost of deploying solutions in Azure&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/cost-management-billing/costs/pricing-calculator?WT.mc_id=finops-62025-socuff" target="_blank" rel="noopener"&gt;Azure pricing calculator is key for properly adopting Azure.&lt;/A&gt; Whether you are in a discovery phase and trying to figure out what to use, what offers to apply or in a post purchase phase where you are trying to optimize your environment and see your negotiated prices, the azure pricing calculator fulfills both new users and existing customers' needs.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The Azure pricing calculator allows organizations to plan and forecast cloud expenses, evaluate different configurations and pricing models, and make informed decisions about service selection and deployment options.&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Decide, plan, and execute your migration to Azure&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;&lt;A class="lia-external-url" href="https://azure.microsoft.com/products/azure-migrate/?msockid=211defa715746377255bfb2a14b0629f" target="_blank" rel="noopener"&gt;Azure Migrate&lt;/A&gt;is Microsoft’s free platform for migrating to and modernizing in Azure&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;. It provides capabilities for discovery, business case (TCO/ROI), assessments, planning and migration in a workload agnostic manner. Customers must have an Azure account and create a migration project within the Azure portal to get started. Azure Migrate supports various migration scenarios, including for VMware and Hyper-V virtual machines (VM), physical servers, databases, and web apps. The service offers accurate appliance based and manual discovery options, to cater to customer needs.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The Azure Migrate process consists of three main phases: Decide, Plan, and Execute. In the Decide phase, organizations discover their IT estate through several supported methods and can get a dependency map for their applications to help collocate all resources belonging to an application. Using the data discovered, one can also estimate costs and savings through the business case (TCO/ROI) feature. In the Plan phase, customers can assess for readiness to migrate, get right-sized recommendations for targets in Azure and tools to use for their migration strategy (IaaS/PaaS). Users can also create a migration plan consisting of iterative “waves” where each wave has all dependent workloads for applications to be moved during a maintenance window. Finally, the Execute phase focuses on the actual migration of workloads to a test environment in Azure in a phased manner to ensure a non-disruptive and efficient transition to Azure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A crucial step in the Azure Migrate process is &lt;A class="lia-external-url" href="http://learn.microsoft.com/azure/migrate/how-to-build-a-business-case?WT.mc_id=finops-62025-socuff" target="_blank" rel="noopener"&gt;building a business case prior to the move, which helps organizations understand the value Azure can bring to their business.&lt;/A&gt; The business case capability highlights the total cost of ownership (TCO) with discounts and compares cost and savings between on-premises and Azure including end-of-support (EOS) Windows OS and SQL versions. It provides year-on-year cash flow analysis with resource utilization insights and identifies quick wins for migration and modernization with an emphasis on long-term cost savings by transitioning from a capital expenditure model to an operating expenditure model, paying only for what is used.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Understanding the Total Cost of Ownership (TCO) is essential for making informed decisions when migrating workloads to Azure. By thoroughly evaluating all cost components, including infrastructure, operational, facilities, licensing and migration costs, organizations can optimize their cloud strategy and achieve financial efficiencies. Utilize tools like the Azure Pricing Calculator and Azure Migrate to gain comprehensive insights and ensure a smooth transition to the cloud.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Apr 2026 05:46:17 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/understanding-the-total-cost-of-ownership/ba-p/4419195</guid>
      <dc:creator>MariaJoseF</dc:creator>
      <dc:date>2026-04-02T05:46:17Z</dc:date>
    </item>
    <item>
      <title>What's new in FinOps toolkit 0.11 – May 2025</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/what-s-new-in-finops-toolkit-0-11-may-2025/ba-p/4420719</link>
      <description>&lt;P&gt;Whether you consider yourself a FinOps practitioner, someone who’s enthusiastic about driving cloud efficiency and maximizing the value you get from the cloud or were just asked to look at ways to reduce cost, the FinOps toolkit has something for you. This month, you’ll find support for AI agents like GitHub Copilot, Power BI updates for invoicing, commitment discounts, and usage analysis, documentation updates from the top feature asks, and more! Read on for details.&lt;/P&gt;
&lt;H1&gt;New to the FinOps toolkit?&lt;/H1&gt;
&lt;P&gt;In case you haven’t heard, the FinOps toolkit is an open-source collection of tools and resources that help you learn, adopt, and implement FinOps in the Microsoft Cloud. The foundation of the toolkit is the Implementing FinOps guide that helps you get started with FinOps whether you’re using native tools in the Azure portal, looking for ways to automate and extend those tools, or if you’re looking to build your own FinOps tools and reports. To learn more about the toolkit, how to provide feedback, or how to contribute, see &lt;A class="lia-external-url" href="https://aka.ms/ftk/docs?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit documentation&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Introducing agentic AI for FinOps hubs&lt;/H1&gt;
&lt;P&gt;Not long ago, AI was a niche tool reserved for specialized tasks. Something tinkerers and researchers played with in controlled environments. Now, it’s everywhere—answering questions, summarizing content, and even helping generate new content. But the real game-changer is moving beyond the simple question-response loop and leveraging AI for complex workflows where you tie specialized agents together to not only summarize and generate content but take action and perform tasks on your behalf. A true assistant. And with the new FinOps hubs copilot instructions, you can connect AI agents to your organizational data and orchestrate FinOps scenarios.&lt;/P&gt;
&lt;P&gt;With the latest update to the FinOps hubs, AI agents—including GitHub Copilot—can now seamlessly connect to FinOps hubs, leveraging predefined AI instructions and the Azure MCP server to unlock FinOps insights in real time. This means any AI-powered assistant can query and interpret FinOps data, providing developers, finance teams, and operations specialists with instant visibility into cloud costs, efficiency metrics, and optimization recommendations—without needing manual intervention or deep KQL expertise. By integrating AI-driven decision-making into FinOps workflows, this feature redefines what’s possible when intelligent automation meets financial operations at scale.&lt;/P&gt;
&lt;P&gt;The easiest way to get started is with GitHub Copilot in Visual Studio Code. You don’t need to be a developer or know how to write code. You can download and extract the FinOps hubs copilot instructions and connect to your hub instance in minutes. To learn more, see &lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/hubs/configure-ai?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Configure and use AI agents&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Power BI updates for invoicing, commitment discounts, and usage analysis&lt;/H1&gt;
&lt;P&gt;We’re constantly looking for ways to improve the built-in reports to support your needs. In the May release, you’ll find a new report for Invoicing and chargeback and new pages within the Rate optimization and Cost summary reports.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Invoicing and chargeback report&lt;/STRONG&gt; helps you implement the &lt;A class="lia-external-url" href="https://aka.ms/ftk/fx/chargeback?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Invoicing and chargeback capability&lt;/A&gt;. The report includes a few breakdowns of your billed cost, invoice recon pages for both Enterprise Agreement (EA) and Microsoft Customer Agreement (MCA), chargeback pages, and more!&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;In the Rate optimization report you’ll find two new pages for commitment discounts. First up is the&amp;nbsp;&lt;STRONG&gt;Commitment discount utilization&lt;/STRONG&gt; page, which shows your aggregate utilization percentage across all commitment discounts going back as far as you’ve exported your data. This was created after a request for historical data beyond the past few months you can see in the portal. You can also customize the report to show a specific utilization target and don’t forget to configure alerts when you publish the report to your Power BI workspace!&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;You’ll also find a new &lt;STRONG&gt;Commitment discount resources&lt;/STRONG&gt; page which shows the resources that consumed a specific commitment discount. This is fairly straightforward, but answers a common question we hear during exploration. And one great thing about both of these pages is that you can right-click any commitment discount throughout the Rate optimization report to drill through to these pages for a specific commitment discount. This can be very helpful when investigating data in a more seamless way.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;And lastly, the Cost summary report includes a new &lt;STRONG&gt;Usage analysis&lt;/STRONG&gt; page that shows usage over time compared to cost for a specific unit. You’ll find a breakdown of cost over time by meter category with an overlaid total cost in the chart, plus a table of each charge with its consumed quantity, block size, price, and total cost. I shared this in a recent &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-prices--quantities/4418097?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener" data-lia-auto-title="Learning FOCUS blog post" data-lia-auto-title-active="0"&gt;Learning FOCUS blog post&lt;/A&gt;, so it’s great to see this now available for you leverage and let us know how we can improve.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;To learn more about all reports, see&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/ftk/pbi/docs?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit Power BI reports&lt;/A&gt;. We hope you’ll find these Power BI updates helpful and encourage you to&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/ftk/ideas?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;share your feedback&lt;/A&gt; about what you’d like to see in future updates. We’re always looking for ways to improve your experience and welcome any new ideas or even pull requests! (I just saw a new pull request from a customer today!)&lt;/P&gt;
&lt;H1&gt;Listening to the community: FinOps hubs documentation updates&lt;/H1&gt;
&lt;P&gt;Every month we try to implement one of the &lt;A class="lia-external-url" href="https://aka.ms/ftk/top?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;top feature requests&lt;/A&gt; submitted and voted on by the community. This month, we picked up two changes related to FinOps hubs documentation. The first is one about publishing an architecture diagram to help organizations understand what’s included in the template and how the system works at a high level.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;If you’re new, FinOps hubs is a data pipeline solution that takes Cost Management exports and uses Azure Data Factory to ingest data into Azure Data Explorer or Microsoft Fabric. Power BI reports and Data Explorer dashboards are available to help visualize and explore costs in detail. And, new this month, AI agents like GitHub Copilot can access the data in Data Explorer using the Azure MCP server. To learn more, see the &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs/docs?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps hubs overview&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;With the expansive growth of FinOps hubs, we’ve also started to get deeper questions around the upgrade process and frequency. With FinOps toolkit updates released monthly, some organizations are curious how often they should plan to update. And as usual, the answer is, “it depends”. When you update ultimately depends on the features you need. If there’s an important feature that you need now, then upgrade to the latest version when it gets released. If you don’t need any of the updates, then skip that release. In general, there isn’t a penalty or risk skipping one or more releases. While we hope you’ll find valuable new and updated features in each release, we also want to minimize the operational management effort. And with that, we’ve refactored the FinOps hub upgrade guide to make it easier and clearer to understand what steps are required to upgrade from one version to another, even if you’re skipping one or more releases.&lt;/P&gt;
&lt;P&gt;The &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs/upgrade?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;new upgrade guide&lt;/A&gt; organizes all steps into a simple, clear tutorial that helps you upgrade to the latest version from any previous release. Each step clearly calls out when it’s required or if it can be skipped for specific releases. If you’ve ever had a question about the exact steps to update from an older version, we hope this will help you get there!&lt;/P&gt;
&lt;P&gt;Every month we try to implement one of the &lt;A class="lia-external-url" href="https://aka.ms/ftk/top?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;top feature requests&lt;/A&gt;. This month, we picked up two changes related to FinOps hubs documentation. The first is one about sharing a FinOps hubs architecture diagram. Fairly straightforward.&lt;/P&gt;
&lt;H1&gt;Other new and noteworthy updates&lt;/H1&gt;
&lt;P&gt;Many small improvements and bug fixes go into each release, so covering everything in detail can be a lot to take in. But I do want to call out a few other small things that you may be interested in.&lt;/P&gt;
&lt;P&gt;In the &lt;A class="lia-external-url" href="https://aka.ms/ftk/guide?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Implementing FinOps guide&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Documented a new FOCUS 1.0 conformance gap where ServiceName may be empty for some purchases and adjustments.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fix BillingPeriodStart and BillingPeriodEnd to always be at the start of the month.&lt;/LI&gt;
&lt;LI&gt;Added support for backporting FOCUS 1.2 into the existing FOCUS 1.0 schema (when released later this month).
&lt;UL&gt;
&lt;LI&gt;This is a short-term solution to avoid errors if FOCUS 1.2 exports are created.&lt;/LI&gt;
&lt;LI&gt;Full FOCUS 1.2 support will come in a future release.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Refactored internal code to align with our vision for the FinOps hubs extensibility model.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A class="lia-external-url" href="https://aka.ms/ftk/pbi?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Power BI reports&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fixed inconsistent numbers in the running total chart caused by date handling issues&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/alerts/finops-alerts-overview?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps alerts&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added telemetry to the FinOps alerts template to track usage and bugs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A class="lia-external-url" href="https://aka.ms/ftk/aoe?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Azure optimization engine&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Upgraded Azure Resource Manager SQL Server name availability API version, used by the engine deployment script, due to upcoming deprecation of 2014-04-01 version.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A class="lia-external-url" href="https://aka.ms/ftk/ps?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;PowerShell commands&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fixed a date handling error in the&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/ftk/Start-FinOpsCostExport?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;Start-FinOpsCostExport command&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Fixed upcoming breaking changes warning in&amp;nbsp;Get-AzAccessToken&amp;nbsp;cmdlet by adding temporary warning suppression.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;In &lt;A class="lia-external-url" href="https://aka.ms/ftk/data?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;open data&lt;/A&gt;:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Added the "10 Seconds" unit of measure.&lt;/LI&gt;
&lt;LI&gt;Added 24 new and 19 existing resource types.&lt;/LI&gt;
&lt;LI&gt;Added 24 new service mappings.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;What’s next&lt;/H1&gt;
&lt;P&gt;I’m excited about what’s coming over the next few months. Here are a few of the things we’re looking at:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;FinOps hubs will add recommendations, similar to what you see in Azure Optimization Engine and FinOps workbooks, a new extensibility model to support customizations at scale, and continued data quality improvements on top of what Cost Management provides.&lt;/LI&gt;
&lt;LI&gt;FinOps hubs and Power BI will both get updated to support FOCUS 1.2.&lt;/LI&gt;
&lt;LI&gt;Power BI will continue to get recurring updates and expand to more FinOps capabilities.&lt;/LI&gt;
&lt;LI&gt;FinOps workbooks will continue to get recurring updates, expand to more FinOps capabilities, and add cost from FinOps hubs.&lt;/LI&gt;
&lt;LI&gt;Azure Optimization Engine will continue to receive small updates as we move its capabilities into FinOps hubs in upcoming releases.&lt;/LI&gt;
&lt;LI&gt;Each release, we’ll try to pick at least one of the&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/ftk/top?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;highest voted issues&lt;/A&gt;&amp;nbsp;(based on&amp;nbsp;👍&amp;nbsp;votes) to continue to evolve based on your feedback, so keep the feedback coming!&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;To learn more, check out the &lt;A class="lia-external-url" href="https://aka.ms/ftk/roadmap?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit roadmap&lt;/A&gt;, and please &lt;A class="lia-external-url" href="https://aka.ms/ftk/discuss?WT.mc_id=finops-250604-micflan" target="_blank" rel="noopener"&gt;let us know&lt;/A&gt;&amp;nbsp;if there’s anything you’d like to see in a future release. Whether you’re using native products, automating and extending those products, or using custom solutions, we’re here to help make FinOps easier to adopt and implement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Jul 2025 20:20:29 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/what-s-new-in-finops-toolkit-0-11-may-2025/ba-p/4420719</guid>
      <dc:creator>micflan</dc:creator>
      <dc:date>2025-07-06T20:20:29Z</dc:date>
    </item>
    <item>
      <title>Learning FOCUS: Prices + quantities</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/learning-focus-prices-quantities/ba-p/4418097</link>
      <description>&lt;P&gt;Welcome to the Learning FOCUS blog series. If this is your first post, I recommend you start with&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-introducing-an-open-billing-data-format/4321609?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Introducing an open billing data format" data-lia-auto-title-active="0"&gt;Introducing an open billing data format&lt;/A&gt; to get a high-level picture of what the &lt;A class="lia-external-url" href="https://aka.ms/finops/focus?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;FinOps Open Cost and Usage Specification (FOCUS)&lt;/A&gt; is and what it covers. This week, I’ll cover the columns that explain how much you used or purchased, the price, and how to calculate each type of cost with these columns. While this topic may seem straightforward, I’ll get into a tiny bit of internal details to explain how our FOCUS dataset helps you understand and process details better than other datasets, so you may find this one interesting.&lt;/P&gt;
&lt;P&gt;⮜ &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-commitment-discounts/4411405?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Previous post (Commitment discounts)" data-lia-auto-title-active="0"&gt;Previous post (Commitment discounts)&lt;/A&gt;&amp;nbsp;&amp;nbsp; ·&amp;nbsp;&amp;nbsp; Next post (Savings) ⮞&lt;/P&gt;
&lt;H1&gt;Understanding the different types of quantities&lt;/H1&gt;
&lt;P&gt;With respect to a “charge” or row in a FOCUS cost and usage dataset, a quantity is the decimal amount of the SKU that was used or purchased. The quantity is measured in “units,” but we’ll discuss that more in the next section. This seems fairly straightforward, but there are of course nuances, specifically in how each unit is measured and priced by the provider. I’ll start by outlining these differences with an analogy:&lt;/P&gt;
&lt;P&gt;Let’s say you want to buy 10 notebooks. You can buy these notebooks individually for, let’s say $2 per notebook. That’s a quantity of 10 with a unit of “Notebooks” and a price of $2. Simple.&lt;/P&gt;
&lt;P&gt;Now, let’s say there’s an option to buy a pack of 5 notebooks together for $8. You still want to buy 10, so now that’s a quantity of 2, The base unit is still “Notebooks”, but now you’re buying them in a pack of 5. We refer to this as the “block size”.&lt;/P&gt;
&lt;P&gt;At the end of the day, you’re still going home with 10 notebooks. The only thing that changed in these examples is how they were packaged and priced. With this example, we can differentiate the “pricing” quantity of “blocks” that were purchased from the distinct number of units that we actually took home. In FOCUS, these are represented by the PricingQuantity and the ConsumedQuantity.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;PricingQuantity&lt;/STRONG&gt; represents the amount of units that were used or purchased based on how the provider sizes and groups the units for that SKU.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;ConsumedQuantity&lt;/STRONG&gt; represents the amount of &lt;EM&gt;distinct &lt;/EM&gt;units that were actually used, regardless of how the provider offers them in bulk or individually. Note that ConsumedQuantity does not apply and will be null (or empty) for purchases.&lt;/P&gt;
&lt;P&gt;For a real-world example, let’s say you use 24 hours of a VM, but the provider bills usage in 100 hour blocks. Your PricingQuantity would be 0.24 (blocks of 100 hours) and your ConsumedQuantity would be 24.&lt;/P&gt;
&lt;P&gt;Okay, now let’s try something a little more complex… Let’s say you have a coupon or “credit” to buy these 10 notebooks, but the store offers some flexibility on how you buy them. Let’s say they also offer 5-section notebooks for $10 each and the store is willing to offer “size flexibility” for the notebooks you purchase by applying a sizing factor or “normalization ratio”. In this case, five single-section notebooks = one 5-section notebook. So, you can purchase 10 single-section notebooks or you can buy two 5-section notebooks with the same credit.&lt;/P&gt;
&lt;P&gt;In the cloud, this is used with commitment discounts and is referred to as instance size flexibility (ISF) and the multiplier is sometimes referred to as a “normalization ratio”. This ratio is usually based on the specs of the SKU you used compared to a base or normalized SKU. In FOCUS 1.1, this quantity is known as the CommitmentDiscountQuantity.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;CommitmentDiscountQuantity&lt;/STRONG&gt; represents the amount of units that were used or purchased after applying the sizing factor or normalization ratio for the SKU that was used. If size flexibility doesn’t apply, then CommitmentDiscountQuantity will be the same as ConsumedQuantity.&lt;/P&gt;
&lt;P&gt;For a real-world example, let’s use the same 24 hours example from earlier. Imagine your commitment discount is for a 2-core SKU, but you use it with an 8-core SKU that has a 4x normalization ratio. This means that it would only take 6 hours to consume the 24 committed hours (6x4=24). Your ConsumedQuantity would be 6 and your CommitmentDiscountQuantity would be 24. The remaining 18 hours would be in a separate row that was not linked to the commitment discount, since you already exhausted the commitment for the day.&lt;/P&gt;
&lt;P&gt;Note that CommitmentDiscountQuantity is not in the Cost Management FOCUS dataset yet. This will be available in a future FOCUS dataset update.&lt;/P&gt;
&lt;H1&gt;Understanding units in FOCUS&lt;/H1&gt;
&lt;P&gt;Each quantity column in FOCUS is coupled with a matching unit column. But before we look at the differences between those, let’s start by understanding what values you can expect to see within a unit column.&lt;/P&gt;
&lt;P&gt;Each unit column indicates what type of measurement is used to generate each specific quantity. Units can be based on:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Objects (e.g., Tokens, Requests, Cores)&lt;/LI&gt;
&lt;LI&gt;Data size (e.g., MB, GB, TB)&lt;/LI&gt;
&lt;LI&gt;Time intervals (e.g., Hours, Minutes, Seconds)&lt;/LI&gt;
&lt;LI&gt;Composite of object type or size with a time interval (e.g., Tokens/Hour or GB-Hours)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;There is a less desirable affordance for numbers mixed into these, like “100 Hours” or “Units/3 Months”; however, we generally try to avoid these more complex units that are more difficult to break down into distinct units.&lt;/P&gt;
&lt;P&gt;As I mentioned, each quantity is coupled with a specific unit, which describes what that number means:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;PricingUnit&lt;/STRONG&gt; describes what is measured for pricing purposes.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ConsumedUnit &lt;/STRONG&gt;describes&lt;STRONG&gt; &lt;/STRONG&gt;the distinct, real-world usage measure, which is usually the same as the PricingUnit.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;CommitmentDiscountUnit &lt;/STRONG&gt;describes the normalized usage measure, if applicable. If normalization is applied, then the unit will indicate that it’s a normalized unit; and if not, it will be the same as ConsumedUnit.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Reusing our example from earlier, I may have a PricingQuantity of 0.24 “blocks” of 100 hours (where the PricingUnit is “Hours”), a ConsumedQuantity of 24 (where the ConsumedUnit is also “Hours”), and assuming the 4x size flexibility ration also applies for this SKU, we would see CommitmentDiscountQuantity of 6 and a CommitmentDiscountUnit of “Normalized Hours”. If size flexibility wasn’t applicable, then it would be “Hours”. And if we were looking at a spend commitment, like Azure savings plans, the CommitmentDiscountUnit would be the pricing currency (e.g., EUR, JPY, or USD).&lt;/P&gt;
&lt;P&gt;Again, as a reminder, CommitmentDiscountQuantity and CommitmentDiscountUnit are part of the FOCUS 1.1 specification and are not available in Cost Management FOCUS 1.0 exports.&lt;/P&gt;
&lt;P&gt;I suppose the only thing left to call out is that these units were actually parsed out of the native UnitOfMeasure column in the Cost Management actual and amortized datasets. In FOCUS, this is the &lt;STRONG&gt;x_PricingUnitDescription&lt;/STRONG&gt; column, which generally contains both a number for the block size and the unit together in a single string. FOCUS splits these into the x_PricingBlockSize and PricingUnit columns where &lt;STRONG&gt;x_PricingBlockSize&lt;/STRONG&gt; is the number of “blocks” the PricingQuantity is measured in. Given the pricing per 100 hours example, the x_PricingUnitDescription would be “100 Hours”, the x_PricingBlockSize would be 100, and the PricingUnit would be “Hours”.&lt;/P&gt;
&lt;P&gt;Of course, not all UnitOfMeasure/x_PricingUnitDescription values are this straightforward. You also have values like “10K” or “10000 1,000s”. Our goal with the FOCUS dataset is to simplify these to make it easier for you to validate and work with the data across SKUs.&lt;/P&gt;
&lt;H1&gt;Comparing the different types of quantities&lt;/H1&gt;
&lt;P&gt;To sum everything up, PricingQuantity represents the amount of PricingUnit values that were used or purchased and x_PricingBlockSize indicates how many units were in each “block.” Using our example:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Column&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;PricingQuantity&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;0.24&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;PricingUnit&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Hours&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;x_PricingBlockSize&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;100&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;x_PricingUnitDescription&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;100 Hours&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;And if you want to look at the distinct units without block pricing, you can use ConsumedQuantity and ConsumedUnit:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Column&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ConsumedQuantity&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;24&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ConsumedUnit&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Hours&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Note that x_PricingBlockSize doesn’t apply here. It’s only applicable to the PricingQuantity and PricingUnit. That said, it is useful when comparing numbers:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;PricingQuantity × x_PricingBlockSize = ConsumedQuantity&lt;/P&gt;
&lt;P&gt;0.24 * 100 = 24&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Or you can work backwards:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;ConsumedQuantity / x_PricingBlockSize = PricingQuantity&lt;/P&gt;
&lt;P&gt;24 / 100 = 0.24&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;When introduced, CommitmentDiscountQuantity should have a custom column paired with it for the normalization ratio to support converting to and from ConsumedQuantity. I’ll share more after Cost Management adds support for FOCUS 1.2.&lt;/P&gt;
&lt;H1&gt;Understanding the different prices&lt;/H1&gt;
&lt;P&gt;We already covered costs in one of the earliest blog posts in this series. FOCUS 1.0 includes prices for ListCost and ContractedCost, but not for BilledCost or EffectiveCost. We understand how important validating data is, so we also include prices for those in our FOCUS dataset. Remember that all prices are based on the PricingUnit and x_PricingBlockSize.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;ListUnitPrice&lt;/STRONG&gt; is the public, retail price per pricing unit block. This is the price you would have paid without any discounts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;ContractedUnitPrice&lt;/STRONG&gt; is the on-demand price per pricing unit block. This is the price you would have paid after negotiated discounts, but without commitment discounts.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;x_BilledUnitPrice &lt;/STRONG&gt;is the price you were billed for on your invoice. This matches what you would see within the actual cost dataset in Cost Management and would be 0 for amortized usage that doesn’t show up on the invoice.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;x_EffectiveUnitPrice&lt;/STRONG&gt; is the logical price you would see after commitment discount purchases are amortized. This matches what you would see within the amortized costs dataset in Cost Management and will be 0 for commitment discount purchases that are amortized over time with usage rows.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;We’ve already covered these concepts, so this part’s pretty simple.&lt;/P&gt;
&lt;H1&gt;Calculating cost (price × quantity)&lt;/H1&gt;
&lt;P&gt;Time for more math! This should seem basic, but calculating cost is as simple as multiplying price times quantity. The key in validating the costs is making sure you always use the PricingQuantity and match the right price and cost columns.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;x_BilledUnitPrice × PricingQuantity = BilledCost&lt;/P&gt;
&lt;P&gt;x_EffectiveUnitPrice × PricingQuantity = EffectiveCost&lt;/P&gt;
&lt;P&gt;ContractedUnitPrice × PricingQuantity = ContractedCost&lt;/P&gt;
&lt;P&gt;ListUnitPrice × PricingQuantity = ListCost&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Of course, you can definitely use the ConsumedQuantity, but you will need to make sure to account for the x_PricingBlockSize to ensure the numbers add up correctly. But generally, we recommend using the PricingQuantity to avoid floating point math issues.&lt;/P&gt;
&lt;H1&gt;Transitioning to FOCUS&lt;/H1&gt;
&lt;P&gt;Whether you’re updating reports, transforming data, validating FOCUS, or simply curious about how FOCUS compares to the historical actual and amortized datasets, you’re probably looking for a more direct mapping of columns. We have separate articles covering each of these scenarios in more detail, but here’s a summary regarding the date columns I covered above.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;Cost Management&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;U&gt;FOCUS&lt;/U&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;(none)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ConsumedQuantity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UnitOfMeasure&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ConsumedUnit&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Quantity&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;PricingQuantity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UnitOfMeasure&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;PricingUnit&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UnitOfMeasure&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;x_PricingBlockSize&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UnitOfMeasure&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;x_PricingUnitDescription&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;(none)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;FOCUS 1.1: CommitmentDiscountQuantity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;(none)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;FOCUS 1.1: CommitmentDiscountUnit&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;PayGPrice&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ListUnitPrice&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UnitPrice&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ContractedUnitPrice&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;EffectivePrice (actual cost data)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;x_BilledUnitPrice&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;EffectivePrice (amortized cost data)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;x_EffectiveUnitPrice&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;For more details, refer to the following articles:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/focus/mapping?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Update reports to use FOCUS columns&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/focus/convert?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Convert cost and usage data to FOCUS &lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/focus/validate?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Validate FOCUS data &lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1&gt;Reviewing cost in Power BI&lt;/H1&gt;
&lt;P&gt;Despite how core quantities and prices are to FinOps, we generally don’t spend much time looking at either. We typically focus more on cost as the product of quantities and prices. But let’s look at a few places where quantities and prices are surfaced in the FinOps toolkit Power BI reports.&lt;/P&gt;
&lt;P&gt;We’ll start with the new &lt;STRONG&gt;Usage analysis&lt;/STRONG&gt; page coming to the &lt;STRONG&gt;Cost summary&lt;/STRONG&gt; report. This page shows your consumed quantity over time broken down by meter category (x_SkuMeterCategory) with an overlay of the total cost during that period, plus the total cost, usage, and price for each type of charge in a table.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;You’ll also notice the block size (x_SkuBlockSize) for each charge, which is important to validating the price times quantity math since we’re showing the consumed quantity. In this case, you can use x_EffectiveUnitPrice × ConsumedQuantity / x_PricingBlockSize.&lt;/P&gt;
&lt;P&gt;Next, we’ll look at the &lt;STRONG&gt;Purchases&lt;/STRONG&gt; page, which shows the price, quantity, and cost for each purchased SKU. The one special note on this page is that we’re using PricingQuantity since ConsumedQuantity only applies to usage charges.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;And now, let’s look at the&amp;nbsp;&lt;STRONG&gt;Prices&lt;/STRONG&gt; page, which lists the SKUs that were used during the period with the list, contracted, and effective price; consumed quantity; consumed unit; block size; and cost for each.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;You’ll also find the Purchases and Prices pages in the&amp;nbsp;&lt;STRONG&gt;Rate optimization&lt;/STRONG&gt; report where they focus exclusively on commitment discount SKUs.&lt;/P&gt;
&lt;P&gt;To wrap things up, I’ll share a few pages from the new &lt;STRONG&gt;Invoicing and chargeback&lt;/STRONG&gt; report coming out in the next FinOps toolkit release. There are two &lt;STRONG&gt;Invoice recon&lt;/STRONG&gt; pages to facilitate reconciling billed charges on your EA or MCA invoice with cost details you see in Cost Management. Both pages have the same basic layout to visualize the services used during the billing period, but the table in each report attempts to align to the information available on the respective invoices, which includes the unit price, quantity, and cost.&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;To learn more about these and other reports, see&amp;nbsp;&lt;A class="lia-external-url" href="https://aka.ms/ftk/pbi?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit Power BI reports&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Querying cost in FinOps hubs&lt;/H1&gt;
&lt;P&gt;Now let’s look at a few queries you can run using &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs/docs?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt;. These are all fairly simple based on what we’ve covered already. The most important things you need to remember are:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Quantities can only be summed when they represent the same unit and block size.&lt;/LI&gt;
&lt;LI&gt;ConsumedQuantity does not apply to purchases, so you will need to use PricingQuantity to measure purchases.&lt;/LI&gt;
&lt;LI&gt;Prices cannot be summed up or averaged.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;With these points in mind, let’s start with a simple view of what we’re billed for:&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;Costs
| summarize
  PricingQuantity = sum(PricingQuantity),
  BilledCost = sum(BilledCost)
  by
  ChargeDescription,
  PricingUnit,
  x_PricingBlockSize,
  x_PricingUnitDescription,
  x_BilledUnitPrice
| project-reorder ChargeDescription, x_PricingUnitDescription, x_PricingBlockSize, PricingQuantity, PricingUnit, x_BilledUnitPrice, BilledCost
| order by BilledCost desc&lt;/LI-CODE&gt;&lt;img /&gt;
&lt;P&gt;You’re not seeing it in the screenshot, but there are a number of SKUs with a block size over one, so let’s look at the distinct usage of specific SKUs:&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;Costs
| where ChargeCategory == 'Usage'
| summarize
  ConsumedQuantity = sum(ConsumedQuantity),
  BilledCost = sum(BilledCost)
  by
  ChargeDescription,
  ConsumedUnit,
  x_PricingBlockSize,
  x_PricingUnitDescription,
  x_BilledUnitPrice
| project-reorder ChargeDescription, x_PricingUnitDescription, x_PricingBlockSize, ConsumedQuantity, ConsumedUnit, x_BilledUnitPrice, BilledCost
| order by BilledCost desc&lt;/LI-CODE&gt;&lt;img /&gt;
&lt;P&gt;This will look the same given my test account doesn’t have many purchases and the screenshot isn’t showing anything with a larger block size, so let’s filter it down to show the difference:&lt;/P&gt;
&lt;LI-CODE lang="kusto"&gt;Costs
| where ChargeCategory == 'Usage'
| where x_PricingBlockSize &amp;gt; 1
| summarize
  PricingQuantity = sum(PricingQuantity),
  ConsumedQuantity = sum(ConsumedQuantity),
  BilledCost = sum(BilledCost)
  by
  ChargeDescription,
  PricingUnit,
  ConsumedUnit,
  x_PricingBlockSize,
  x_PricingUnitDescription,
  x_BilledUnitPrice
| project-reorder ChargeDescription, x_PricingUnitDescription, x_PricingBlockSize, PricingQuantity, PricingUnit, ConsumedQuantity, ConsumedUnit, x_BilledUnitPrice, BilledCost
| order by BilledCost desc&lt;/LI-CODE&gt;&lt;img /&gt;
&lt;P&gt;This is pretty straightforward. PricingQuantity is smaller based on the number of units per “block”. You may also notice there are some very small quantities, like in the first example which has “449” starting in the 15&lt;SUP&gt;th&lt;/SUP&gt; decimal place. These tiny numbers are most likely floating point math errors. This is the same as “rounding errors” you may see at the end of each month. They’re important because you may find that price times quantity doesn’t add up exactly because of these small decimal values. This is a general computing issue and not related to anything Microsoft is doing.&lt;/P&gt;
&lt;P&gt;You can use the same queries with other prices and costs if you want to see the effective, contracted, or list cost. And of course, we can also compare prices to calculate per-SKU discounts, but I’ll save that for the next blog post where we talk about discounts and savings.&lt;/P&gt;
&lt;P&gt;There’s a lot more we could cover using the same columns for different unique scenarios, like commitment discounts and Azure Hybrid Benefit. Let me know what you’d like to see covered and I’m happy to write dedicated blog posts to dig into anything.&lt;/P&gt;
&lt;H1&gt;What next?&lt;/H1&gt;
&lt;P&gt;At this point, we have a high-level understanding of the types of charges we’re incurring, how much we’re being charged, when we incurred those charges, what resources we deployed that incurred the charges, what services those resources rolled up to, the underlying SKUs we were charged for, how to identify and describe purchases, how to identify and measure commitment discounts, and how to verify prices and costs. Next, we’ll cover something everyone is interested in as part of our efficiency efforts: calculating discounts and savings.&lt;/P&gt;
&lt;P&gt;If you need a refresher or have any questions about previous topics, this is a good time to review them. We’ll touch on a little of everything given the overlapping concepts.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-introducing-an-open-billing-data-format/4321609?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Introduction" data-lia-auto-title-active="0"&gt;Introduction&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-cost-columns/4352713?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Costs" data-lia-auto-title-active="0"&gt;Costs&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-charge-types-and-pricing-models/4357997?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Charge types and pricing models" data-lia-auto-title-active="0"&gt;Charge types and pricing models&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/FinOpsBlog/learning-focus-date-columns/4366382?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Dates" data-lia-auto-title-active="0"&gt;Dates&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-resource-columns/4372954?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Resources" data-lia-auto-title-active="0"&gt;Resources&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-service-columns/4388703?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Services" data-lia-auto-title-active="0"&gt;Services&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-skus/4398881?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="SKUs" data-lia-auto-title-active="0"&gt;SKUs&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-purchases/4404283?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Purchases" data-lia-auto-title-active="0"&gt;Purchases&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-commitment-discounts/4411405?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Commitment discounts" data-lia-auto-title-active="0"&gt;Commitment discounts&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;For a more directed walkthrough, the FinOps Foundation offers a free &lt;A class="lia-external-url" href="https://learn.finops.org/introduction-to-focus?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Introduction to FOCUS course&lt;/A&gt;. When you’re ready to dig into your own FOCUS data, check out the &lt;A class="lia-external-url" href="https://aka.ms/ftk/pbi/docs?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;Power BI reports in the FinOps toolkit&lt;/A&gt;. These reports offer a great starting point that you can customize to meet your needs. And if you’re looking for more advanced analytics that can handle data at scale, check out &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs/docs?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt;, which offer additional benefits, like pre-calculated savings for EA and MCA accounts.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;⮜ &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/learning-focus-commitment-discounts/4411405?WT.mc_id=finops-250528-micflan" target="_blank" rel="noopener" data-lia-auto-title="Previous post (Commitment discounts)" data-lia-auto-title-active="0"&gt;Previous post (Commitment discounts)&lt;/A&gt;&amp;nbsp;&amp;nbsp; ·&amp;nbsp;&amp;nbsp; Next post (Savings) ⮞&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Jul 2025 20:20:52 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/learning-focus-prices-quantities/ba-p/4418097</guid>
      <dc:creator>micflan</dc:creator>
      <dc:date>2025-07-06T20:20:52Z</dc:date>
    </item>
    <item>
      <title>How to control your Azure costs with Governance and Azure Policy</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/how-to-control-your-azure-costs-with-governance-and-azure-policy/ba-p/4397977</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure resources can be configured in many ways, including ways which affect their performance, security, reliability, available features and ultimately cost.&lt;/P&gt;
&lt;P&gt;The challenge is, all these resources and configurations are completely available to us by default. As long as someone has permission, they can create&amp;nbsp;&lt;STRONG&gt;any resource and configuration they like&lt;/STRONG&gt;. This implicit “anything goes” gives our technical teams the freedom to decide what’s best. Like a kid in a toy shop, they will naturally favour the biggest, fastest and coolest toys.&lt;/P&gt;
&lt;P&gt;The immediate risk of course, is building&amp;nbsp;&lt;EM&gt;beyond&lt;/EM&gt; business requirements. Too much SKU, too much resilience, too much performance and too high cost.&lt;/P&gt;
&lt;P&gt;Left unchecked, and we risk increasingly challenging and long-term issues:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Over-delivering will quickly become the norm.&lt;/LI&gt;
&lt;LI&gt;Excessive resources configurations will become the habitual default in all environments.&lt;/LI&gt;
&lt;LI&gt;Teams will become mis-aligned from wider business requirements.&lt;/LI&gt;
&lt;LI&gt;Teams will become used to working in a frictionless environment, and challenge any restrictions.&lt;/LI&gt;
&lt;LI&gt;FinOps teams will be stuck in endless cost optimisation work.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;You may already be feeling the pain. Trapped in a cycle of repetitive, reactive cost optimisation work, seeing the same repeat offenders and looking for a way out. To break (or prevent) the cycle, a new approach is needed. We must switch priorities from detection and removal, to prevention and control. We must &lt;EM&gt;keep&lt;/EM&gt; waste out. We must &lt;EM&gt;avoid&lt;/EM&gt; over-provisioning.&lt;/P&gt;
&lt;P&gt;We can achieve this with governance.&lt;/P&gt;
&lt;H2&gt;What is governance&lt;/H2&gt;
&lt;P&gt;Governance is a collection of rules, processes and tools that control how an organization consumes IT resources. It ensures our teams deploy resources that align to certain business goals, like security, cost, resource management and compliance.&lt;/P&gt;
&lt;P&gt;Governance rules are like rules for a boardgame. They define&amp;nbsp;&lt;EM&gt;how&lt;/EM&gt; the game should be played, no matter &lt;EM&gt;who&lt;/EM&gt; is playing the game.&lt;/P&gt;
&lt;P&gt;This is important. It aligns everyone to our organization's rules regardless of role, position, seniority and authority. It helps ensures people play by &lt;EM&gt;the&lt;/EM&gt; rules rather than &lt;EM&gt;their&lt;/EM&gt; rules. Try playing Monopoly with no rules. What’s going to happen? I &lt;EM&gt;will&lt;/EM&gt; pass go, and I &lt;EM&gt;will&lt;/EM&gt; collect 200 dollars.&lt;/P&gt;
&lt;P&gt;For Microsoft Azure, and the cloud in general, governance is centered around controlling &lt;STRONG&gt;how resources can and cannot be configured.&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Storage Accounts should be configured like this.&lt;/LI&gt;
&lt;LI&gt;Virtual Machines must be configured like that.&lt;/LI&gt;
&lt;LI&gt;Disks can’t be configured with this.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;It's as much about keeping wrong configurations out, as the right configurations in. When we enforce configurations that meet our goals and restrict those that don’t, we drastically increase our chance of success.&lt;/P&gt;
&lt;H2&gt;Why governance matters for FinOps&lt;/H2&gt;
&lt;P&gt;Almost all over-provisioning and waste can be traced back to how a resource is configured. From SKU, to size, redundancy and additional features, if it’s not&amp;nbsp;&lt;EM&gt;needed&lt;/EM&gt; it’s being wasted.&lt;/P&gt;
&lt;P&gt;That’s all over-provisioning and waste is;&amp;nbsp;&lt;EM&gt;Resources, properties and values that we don’t need.&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Too much SKU, like Premium Disks Standard HDD/SSD.&lt;/LI&gt;
&lt;LI&gt;Too much redundancy, like Storage Accounts with GRS when LRS is fine.&lt;/LI&gt;
&lt;LI&gt;Too many features, like App Gateways with WAF but it’s disabled.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Have a think for a moment. What over-provisioning have you seen in the past? Was it one or two resource properties causing the problems?&lt;/P&gt;
&lt;P&gt;Whatever you’ve seen, with governance we can stop it happening again.&lt;/P&gt;
&lt;P&gt;When we control how resources get configured, we can control over-provisioning and waste, too. We can determine configurations we &lt;EM&gt;don’t need&lt;/EM&gt; through our optimization efforts, and then create rules that define the configurations we &lt;EM&gt;do need&lt;/EM&gt;:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;“We don’t need Premium SSD disks.”&lt;/EM&gt; becomes &lt;EM&gt;“Disks must be Standard HDD/SSD.”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;“We don’t need Storage Accounts with GRS.”&lt;/EM&gt; becomes &lt;EM&gt;“Storage Accounts must use LRS.”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;“&lt;EM&gt;We don’t&lt;/EM&gt; &lt;EM&gt;need WAF enabled Application Gateways”&lt;/EM&gt; becomes &lt;EM&gt;“Application Gateways should be Standard SKUs”&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;These rules effectively remove the option to build beyond requirements. They will help teams avoid building too much/too big, stay within their means, hold them a bit more accountable and protect us from future overspend.&lt;/P&gt;
&lt;P&gt;Detection becomes Prevention. Removal becomes Control.&lt;/P&gt;
&lt;P&gt;Over time, we will:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Help our teams deliver &lt;EM&gt;just enough&lt;/EM&gt;.&lt;/LI&gt;
&lt;LI&gt;Raise and improve awareness of over-configurations and waste.&lt;/LI&gt;
&lt;LI&gt;Help keep waste out once it’s found.&lt;/LI&gt;
&lt;LI&gt;Reduce the chances over-provisioning in future.&lt;/LI&gt;
&lt;LI&gt;Steadily reduce the need for ongoing Cost Optimisation efforts.&lt;/LI&gt;
&lt;LI&gt;Free up time for other FinOps stuff.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This is why governance is a natural evolution from cost optimization, and why it’s critical for FinOps teams who want to be more proactive and spend less time cleaning up after tech teams.&lt;/P&gt;
&lt;H2&gt;How can we natively govern Microsoft Azure?&lt;/H2&gt;
&lt;P&gt;In Microsoft Azure, we can use the native governance service Azure Policy to help control our environments. We can embed our governance rules into Azure itself and have Azure Policy do the heavy lifting of checking, reporting and enforcing.&lt;/P&gt;
&lt;P&gt;Azure Policy has many useful features:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Supports over &lt;STRONG&gt;74000 resource properties&lt;/STRONG&gt;, including all that generate costs.&lt;/LI&gt;
&lt;LI&gt;Can &lt;STRONG&gt;audit&lt;/STRONG&gt; resources, &lt;STRONG&gt;deny&lt;/STRONG&gt; deployments and even &lt;STRONG&gt;auto-resolve&lt;/STRONG&gt; resources as they come into Azure.&lt;/LI&gt;
&lt;LI&gt;Provides &lt;STRONG&gt;easy reporting&lt;/STRONG&gt; of compliance issues, saving time on manual checks.&lt;/LI&gt;
&lt;LI&gt;Checks &lt;STRONG&gt;every deployment from&lt;EM&gt; &lt;/EM&gt;every source&lt;/STRONG&gt;. From Portal to Terraform, it’s got you covered.&lt;/LI&gt;
&lt;LI&gt;Supports &lt;STRONG&gt;different scopes from&lt;/STRONG&gt; Resource Groups to Management Groups, allowing policies to be used at any scale.&lt;/LI&gt;
&lt;LI&gt;Supports &lt;STRONG&gt;parameters&lt;/STRONG&gt;, making policies re-usable and quick to modify when responding to change in requirements.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Exemptions&lt;/STRONG&gt; can be used on resources we want to ignore for now.&lt;/LI&gt;
&lt;LI&gt;Supports different &lt;STRONG&gt;enforcement modes&lt;/STRONG&gt;, for safe rollout of new policies.&lt;/LI&gt;
&lt;LI&gt;It comes at no additional cost. &lt;STRONG&gt;Free!&lt;BR /&gt;&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These features make Azure Policy an extremely flexible and powerful tool that can help control resources, properties and values at any scale.&lt;/P&gt;
&lt;P&gt;We can:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Create Policies for &lt;STRONG&gt;almost any cost-impacting value&lt;/STRONG&gt;. SKUs, Redundancy Tiers, Instance Sizes, you name it…&lt;/LI&gt;
&lt;LI&gt;Use different effects based on how ‘strict’ the rule should be. For example, we can use Deny (resource creation) for resource missing “Must have” attributes, and Audit to check if resources are still compliant with “Should have” attributes.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Use a combination of effects, enforcement modes and exemptions to control the rollout of new policies.&lt;/LI&gt;
&lt;LI&gt;Reuse the Policies on multiple environments (like development versus production), with different values and effects depending on the environment's needs.&lt;/LI&gt;
&lt;LI&gt;Quickly change the values when needed. When requirements change, the parameters can be modified with little effort.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;How to avoid unwanted Friction&lt;/H2&gt;
&lt;P&gt;A common concern with governance is that it will create friction, interrupt work and slow teams down. This is a valid concern, and Azure Policy’s features allow for a controlled and safe rollout. With a good plan there is no need to worry.&lt;/P&gt;
&lt;P&gt;Consider the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Start with Audit-Only policies and non-production environments.&lt;/LI&gt;
&lt;LI&gt;Start with simpler resources and regular/top offenders.&lt;/LI&gt;
&lt;LI&gt;Test policies in sandboxes before using them in live environments.&lt;/LI&gt;
&lt;LI&gt;Use the ‘Do not Enforce’ mode when first assigning Deny policies. This treats them as Audit-only, allowing review before being enforced.&lt;/LI&gt;
&lt;LI&gt;Always parameterize Effects and Values, for quick modification when needed.&lt;/LI&gt;
&lt;LI&gt;Use exemptions when there are sensitive resources that are best to ignore for now.&lt;/LI&gt;
&lt;LI&gt;Work w&lt;EM&gt;ith&lt;/EM&gt; your teams and agree to a fair and balanced approach. Governance is for everyone and should include everyone where possible.&lt;BR /&gt;&lt;BR /&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The biggest challenge of all may be breaking habits formed over years of freedom in the Cloud. It’s natural to resist change, especially when it takes away our freedom.&lt;/P&gt;
&lt;P&gt;Remember, it’s friction&amp;nbsp;&lt;EM&gt;where it’s needed,&lt;/EM&gt; Interuption &lt;EM&gt;where it’s needed,&lt;/EM&gt; slow down &lt;EM&gt;where it’s needed.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;They key to getting teams onboard is&amp;nbsp;&lt;STRONG&gt;delivering the right message&lt;/STRONG&gt;. Why are we doing this? How will they benefit? How does it help them? How could they be impacted if you do nothing?&lt;/P&gt;
&lt;P&gt;This needs to be more than “To meet our FinOps goals”. That’s your goal, not theirs. They won’t care.&lt;/P&gt;
&lt;P&gt;Try something like:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We keep seeing over-utilization and waste and are spending an additional ‘X amount’ of time and money trying to remove it. This is now impacting our ability invest properly into our IT teams, affecting other departments and impacting our overall growth.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;If we can get over-spend reduced and under control, we can re-invest where you need it; tooling, people, training and anything else that makes your lives better.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;We want to implement governance rules and policies that will prevent issues reoccurring. With your insights and support we can achieve this faster, avoid unwanted impact, and can re-invest back into our IT teams once done.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Sound good to you?!&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;This is far more compelling and gives them reason to get onboard and help out.&lt;/P&gt;
&lt;H2&gt;How to start your FinOps governance journey&lt;/H2&gt;
&lt;P&gt;Making the jump from workload optimization into governance might initially sound challenging, but it’s actually pretty straightforward.&lt;/P&gt;
&lt;P&gt;Consider the typical workload optimization cycle:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Discover potential misconfiguration, optimization and waste cleanup opportunities.&lt;/LI&gt;
&lt;LI&gt;Compare to actual business requirements.&lt;/LI&gt;
&lt;LI&gt;Optimize workload to meet those business requirements.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;A governance practice extends this to the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Identify potential misconfigurations, optimization and waste cleanup opportunities.&lt;/LI&gt;
&lt;LI&gt;Compare to actual business requirements.&lt;/LI&gt;
&lt;LI&gt;Optimize workload to meet those business requirements.&lt;/LI&gt;
&lt;LI&gt;Create an Azure Policy based on how the resource should have originally been configured, and how it should remain in future.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Thats it, one extra step.&lt;/P&gt;
&lt;P&gt;Most of the hard work has already happened in steps 1-3, in the workload optimization we’ve already been doing. Step 4 simply turns the optimization into rule that says “This resource must be like this from now on”, preventing it happening again.&lt;/P&gt;
&lt;P&gt;Let's do it again with a real resource, an Azure Disk:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Identify Premium SSD Disks in non-production environment.&lt;/LI&gt;
&lt;LI&gt;Compare to business requirements, which confirms Standard HDD is fine.&lt;/LI&gt;
&lt;LI&gt;Change Disk SKU from Premium to Standard HDD.&lt;/LI&gt;
&lt;LI&gt;Create Azure Policy that only allows Disks with Standard HDD in the environment and denies other SKUs.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Done. No more Premium SSDs in this environment again. Prevention and Control.&lt;/P&gt;
&lt;P&gt;The real work lies in being able to understand and identify how resources become over-provisioned and wasteful. Until then we will struggle to optimize, let alone govern.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;The Wasteful Eight&lt;/H2&gt;
&lt;P&gt;There's so many resources and properties available. Understanding all the ways they can create waste can be challenging.&lt;/P&gt;
&lt;P&gt;Fortunately, we can group resource properties into eight main categories, which make our efforts a bit easier. Lets look at the Wasteful Eight:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; height: 375px; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 30.6333%" /&gt;&lt;col style="width: 69.3667%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG&gt;Category&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG&gt;Examples&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 87px;"&gt;&lt;td style="height: 87px;"&gt;Over-provisioned SKUs&lt;/td&gt;&lt;td style="height: 87px;"&gt;
&lt;P&gt;- Disks with Premium SSD instead of Standard HDD/SSD.&amp;nbsp;&lt;BR /&gt;- App Service Plans with Premium SKU, instead of Standard.&amp;nbsp;&lt;BR /&gt;- Azure Bastion with Premium SKU, instead of Developer.&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;Too much redundancy&lt;/td&gt;&lt;td style="height: 27px;"&gt;- Storage Accounts configured with GRS, when LRS is fine.&amp;nbsp;&lt;BR /&gt;- Recovery Services Vaults with GRS, when LRS is fine.&amp;nbsp;&lt;BR /&gt;- SQL Databases with Zone Redundancy enabled.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 51px;"&gt;&lt;td style="height: 51px;"&gt;Too large / too many instances.&lt;/td&gt;&lt;td style="height: 51px;"&gt;- Azure VMs with too many CPUs.&amp;nbsp;&lt;BR /&gt;- SQL Databases with too many vCores/DTUs.&lt;BR /&gt;- Disks which are over 1024GB.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 75px;"&gt;&lt;td style="height: 75px;"&gt;Supports auto-scaling/serverless, but aren’t using it.&lt;/td&gt;&lt;td style="height: 75px;"&gt;- Application Gateway doesn’t have auto-scaling enabled.&amp;nbsp;&lt;BR /&gt;- App Service Plans without Auto-Scaling.&amp;nbsp;&lt;BR /&gt;- SQL Databases using fixed provisioning, instead of Serverless or Elastic Pools&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;Too many backups.&lt;/td&gt;&lt;td style="height: 27px;"&gt;- Backups that are too frequent.&amp;nbsp;&lt;BR /&gt;- Backups with too long retention periods.&lt;BR /&gt;- Non-prod backups with similar retentions as Prod.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;Too much logging.&lt;/td&gt;&lt;td style="height: 27px;"&gt;- Logging enabled in non-prod.&amp;nbsp;&lt;BR /&gt;- Log retentions too long.&amp;nbsp;&lt;BR /&gt;- Logging to Log Analytics instead of Storage Accounts.&amp;nbsp;&lt;BR /&gt;- Log Analytics not using cheaper table plans.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;Extra features that are disabled, or not being used.&lt;/td&gt;&lt;td style="height: 27px;"&gt;- Application Gateway with WAF SKU, but the WAF is disabled.&amp;nbsp;&lt;BR /&gt;- Azure Firewall with Premium SKU, but IDPS is disabled.&amp;nbsp;&lt;BR /&gt;- Storage Accounts with SFTP enabled but not used.&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;Orphaned/Unused.&lt;/td&gt;&lt;td style="height: 27px;"&gt;- Unattached Disks&lt;BR /&gt;- Empty App Service Plans&lt;BR /&gt;- Unattached NAT Gateways&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;Remember, it's only wasteful if you don't have a business need for it, like too much redundancy in a non-production/development environment. In a production environment, you're likely to need premium disks or SKUs, GRS, and longer logging and backup retention periods. Governance is about reducing spend where you don't need it, and frees up money to spend where you do need it, for better redundancy, faster response times etc.&lt;/DIV&gt;
&lt;P&gt;All resources will fall &lt;EM&gt;somewhere&lt;/EM&gt; in the above categories. A single resource can be found in most of them.&lt;/P&gt;
&lt;P&gt;For example, an Application Gateway can:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Have an over-provisioned/unused SKU (WAF vs Standard).&lt;/LI&gt;
&lt;LI&gt;Have auto-scaling disabled.&lt;/LI&gt;
&lt;LI&gt;Have too many instances.&lt;/LI&gt;
&lt;LI&gt;Have excessive logging enabled.&lt;/LI&gt;
&lt;LI&gt;Have the WAF SKU, but the WAF is for some reason disabled.&lt;/LI&gt;
&lt;LI&gt;Be orphaned, by having no backend VMs.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Breaking down any resource like this will uncover most of its cost-impacting properties and give us a good idea of what to focus on. A few outliers are inevitable, but the vast majority will be covered.&lt;/P&gt;
&lt;P&gt;Let's explore the Application Gateway examples further, the reasons why each item is wasteful and the subsequent Policies we might consider in a non-production environment. I’ve also included some links to respective Azure Policy definitions available in GitHub (test before use!).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 25.9205%" /&gt;&lt;col style="width: 21.944%" /&gt;&lt;col style="width: 26.3623%" /&gt;&lt;col style="width: 25.7732%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG&gt;Discovery&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Reason&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Governance Rule/Policy&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;&lt;STRONG&gt;Allowed Values and effects if applicable&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Application Gateway has WAF SKU but doesn’t need it.&lt;/td&gt;&lt;td&gt;We use another firewall product.&lt;/td&gt;&lt;td&gt;&lt;A href="https://github.com/aluckwell/Azure-Cost-Governance/blob/main/AGW01_Allowed_Application_Gateway_Tiers.json" target="_blank" rel="noopener"&gt;Allowed Application Gateway SKUs&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Standard&lt;BR /&gt;Deny&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Application Gateway isn’t configured with Auto-Scaling, creating inefficient use of instances.&lt;/td&gt;&lt;td&gt;Auto-Scaling improves efficiency by scaling up and down as demand changes. Manual scaling is inefficient.&lt;/td&gt;&lt;td&gt;&lt;A href="https://github.com/aluckwell/Azure-Cost-Governance/blob/main/AGW04_Application_Gateway_Not_Using_Auto-Scaling.json" target="_blank" rel="noopener"&gt;Application Gateway should be configured with Auto-Scaling.&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Deny&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Application Gateway min/max instance counts are higher than needed.&lt;/td&gt;&lt;td&gt;Setting Min/Max instance thresholds avoids them being too high. Particularly the min count, which might not need more than 1 instance.&lt;/td&gt;&lt;td&gt;&lt;A href="https://techcommunity.microsoft.com/t5/AGW06_Maximum_Application_Gateway_Auto_Scaling_Instances.json" target="_blank" rel="noopener"&gt;Allowed App Gateway Min/Max instance counts&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Min Count: 1&lt;BR /&gt;Max Count: 2&lt;BR /&gt;&lt;BR /&gt;Deny&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Non-Prod Application Gateways have logging enabled, when it’s not needed.&lt;/td&gt;&lt;td&gt;We don't have usage that needs to be logged in non-production environments.&lt;/td&gt;&lt;td&gt;Non-Prod Application Gateways should avoid logging&lt;/td&gt;&lt;td&gt;Deny&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Application Gateway has WAF but it’s disabled.&lt;/td&gt;&lt;td&gt;A disabled WAF is doing nothing yet still paid for. Either use it, or change the Tier to Standard to reduce costs.&lt;/td&gt;&lt;td&gt;&lt;A href="https://techcommunity.microsoft.com/t5/AGW02_Application_Gateway_WAF_State_Disabled.json" target="_blank" rel="noopener"&gt;Application Gateway WAF is disabled.&lt;/A&gt;&lt;/td&gt;&lt;td&gt;Audit&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Application Gateway has no Backend Pool resources.&lt;/td&gt;&lt;td&gt;Indicates an orphaned/unused App Gateway. It should be removed.&lt;/td&gt;&lt;td&gt;Application Gateway has empty Backend Pool and appears Orphaned&lt;/td&gt;&lt;td&gt;Audit&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Now this might seem a bit over the top. Do we really to be controlling our App Gateway min/max scaling counts? It depends. If you have a genuine problem with too many instances then yes, you probably should.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The point is, &lt;STRONG&gt;you can if you need to&lt;/STRONG&gt;. This simply demonstrates how powerful governance and Azure Policy can be at controlling how resources are used.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;A more likely starting point will be things like SKUs, Sizes, Redundancy Tiers and Logging. These are the high risk, high impact areas you’ve probably seen before and want to avoid again.&lt;/P&gt;
&lt;P&gt;Once you exhaust those it's time to jump into &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-gb/azure/cost-management-billing/costs/cost-analysis-common-uses" target="_blank" rel="noopener"&gt;Cost Management&lt;/A&gt; and explore your most &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-gb/azure/cost-management-billing/costs/cost-analysis-common-uses#view-cost-breakdown-by-azure-resource" target="_blank" rel="noopener"&gt;expensive resources&lt;/A&gt; and &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-gb/azure/cost-management-billing/costs/cost-analysis-common-uses#view-cost-breakdown-by-azure-service" target="_blank" rel="noopener"&gt;services&lt;/A&gt;. Explore the Billing Meters to see how each resources costs are broken down. This is where your money is going and where your governance rules will have the biggest impact.&lt;/P&gt;
&lt;H2&gt;Where to find Azure Policies&lt;/H2&gt;
&lt;P&gt;If you want to use Azure policy you're going to need some Policy Definitions. A Definition is your governance rule defined in Azure. It tells Azure what configurations you do and don't want, and how to deal with problems.&lt;/P&gt;
&lt;P&gt;It's recommended that you start with some of the in-built policies first, before creating your own. These are provided by Microsoft, available inside Azure Policy to be applied, and are maintained by Microsoft. Fortunately, there are plenty of policies to choose from: built-in, community provided, Azure Landing Zone related and a few of my own:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Azure Built-in Policy Repo: &lt;A href="https://github.com/Azure/azure-policy" target="_blank" rel="noopener"&gt;https://github.com/Azure/azure-policy&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Azure Community Policy Repo: &lt;A href="https://github.com/Azure/Community-Policy" target="_blank" rel="noopener"&gt;https://github.com/Azure/Community-Policy&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Azure Landing Zones Policies: &lt;A href="https://github.com/Azure/Enterprise-Scale/blob/main/docs/wiki/ALZ-Policies.md" target="_blank" rel="noopener"&gt;https://github.com/Azure/Enterprise-Scale/blob/main/docs/wiki/ALZ-Policies.md&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;My stuff:&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/aluckwell/Azure-Cost-Governance" target="_blank" rel="noopener"&gt;https://github.com/aluckwell/Azure-Cost-Governance&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Making the search even easier is the&amp;nbsp;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/" target="_blank" rel="noopener"&gt;AzAdvertizer&lt;/A&gt;. This handy tool brings thousands of policies into a single location, with easy search and filter functionality to help find useful ones. It even includes 'Deploy to Azure' links for quick deployment.&lt;/P&gt;
&lt;P&gt;AzAdvertizer: &lt;A href="https://www.azadvertizer.net/azpolicyadvertizer_all.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer_all.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Of the thousands of policies in AzAdvertizer, the list below is a great starting point for FinOps. These are all built-in, ready to go and will help you get familiar with how Azure Policy works:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; height: 1008px; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 17.5258%" /&gt;&lt;col style="width: 21.0604%" /&gt;&lt;col style="width: 61.4138%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG&gt;Policy Name&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG&gt;Use Case&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG&gt;Link&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 147px;"&gt;&lt;td style="height: 147px;"&gt;Not Allowed Resource Types&lt;/td&gt;&lt;td style="height: 147px;"&gt;Block the creation of resources you don't need. Helps control when resource types can/can't be used.&lt;/td&gt;&lt;td style="height: 147px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/6c112d4e-5bc7-47ae-a041-ea2d9dccd749.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/6c112d4e-5bc7-47ae-a041-ea2d9dccd749.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 147px;"&gt;&lt;td style="height: 147px;"&gt;Allowed virtual machine size SKUs&lt;/td&gt;&lt;td style="height: 147px;"&gt;Allow the use of specific VM SKUs and Sizes and block SKUs that are too big or not fit for our use-case.&lt;/td&gt;&lt;td style="height: 147px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/cccc23c7-8427-4f53-ad12-b6a63eb452b3.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/cccc23c7-8427-4f53-ad12-b6a63eb452b3.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 147px;"&gt;&lt;td style="height: 147px;"&gt;Allowed App Services Plan SKUs&lt;/td&gt;&lt;td style="height: 147px;"&gt;Allow the use of specific App Service Plan SKUs. Block SKUs that are too big or not fit for our use-case.&lt;/td&gt;&lt;td style="height: 147px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/27e36ba1-7f72-4a8e-b981-ef06d5c78c1a.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/27e36ba1-7f72-4a8e-b981-ef06d5c78c1a.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 195px;"&gt;&lt;td style="height: 195px;"&gt;[Preview]: Do not allow creation of Recovery Services vaults of chosen storage redundancy.&lt;/td&gt;&lt;td style="height: 195px;"&gt;Avoid Recovery Services Vaults with too much redundancy. If you don't need GRS, block it.&lt;/td&gt;&lt;td style="height: 195px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/8f09fda1-91a2-4e14-96a2-67c6281158f7.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/8f09fda1-91a2-4e14-96a2-67c6281158f7.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 99px;"&gt;&lt;td style="height: 99px;"&gt;Storage accounts should be limited by allowed SKUs&lt;/td&gt;&lt;td style="height: 99px;"&gt;Avoid too much redundancy and performance when it's not needed.&lt;/td&gt;&lt;td style="height: 99px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/7433c107-6db4-4ad1-b57a-a76dce0154a1.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/7433c107-6db4-4ad1-b57a-a76dce0154a1.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 219px;"&gt;&lt;td style="height: 219px;"&gt;Configure Azure Defender for Servers to be disabled for resources (resource level) with the selected tag&lt;/td&gt;&lt;td style="height: 219px;"&gt;Disable Defender for Servers on Virtual Machines if they don't need it. Help control the rollout of Defender for Servers, avoiding machines that don't need it.&lt;/td&gt;&lt;td style="height: 219px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/080fedce-9d4a-4d07-abf0-9f036afbc9c8.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/080fedce-9d4a-4d07-abf0-9f036afbc9c8.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;Unused App Service plans driving cost should be avoided&lt;/td&gt;&lt;td style="height: 27px;"&gt;Highlight when App Service Plans are 'Orphaned'. Either put them to use or get them deleted ASAP.&lt;/td&gt;&lt;td style="height: 27px;"&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.azadvertizer.net/azpolicyadvertizer/Audit-ServerFarms-UnusedResourcesCostOptimization.html" target="_blank" rel="noopener"&gt;https://www.azadvertizer.net/azpolicyadvertizer/Audit-ServerFarms-UnusedResourcesCostOptimization.html&lt;/A&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;New policies are always being added, and existing policies improved (see the &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/azuregovernanceandmanagementblog/public-preview-announcement-azure-policy-built-in-versioning/4186105" target="_blank" rel="noopener" data-lia-auto-title="Versioning" data-lia-auto-title-active="0"&gt;Versioning&lt;/A&gt;). Check back occasionally for changes and new additions that might be useful.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;When you get the itch to create your own, I'd suggest watching the following videos to understand the nuts and bolts of Azure Policy, and then onto Microsoft Learn for further reading.&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.youtube.com/watch?v=4wGns611G4w" target="_blank" rel="noopener"&gt;https://www.youtube.com/watch?v=4wGns611G4w&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.youtube.com/watch?v=fhIn_kHz4hk" target="_blank" rel="noopener"&gt;https://www.youtube.com/watch?v=fhIn_kHz4hk&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/governance/policy/overview?WT.mc_id=finops-0525-socuff" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/governance/policy/overview&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Good luck!&lt;/P&gt;</description>
      <pubDate>Wed, 18 Jun 2025 23:23:55 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/how-to-control-your-azure-costs-with-governance-and-azure-policy/ba-p/4397977</guid>
      <dc:creator>AndrewLuckwell</dc:creator>
      <dc:date>2025-06-18T23:23:55Z</dc:date>
    </item>
    <item>
      <title>Getting started with FinOps hubs: Multicloud cost reporting with Azure and Google Cloud</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/getting-started-with-finops-hubs-multicloud-cost-reporting-with/ba-p/4415190</link>
      <description>&lt;P&gt;Microsoft’s FinOps hubs offer a powerful and trusted foundation for managing, analyzing, and optimizing cloud costs. Built on Azure Data Explorer (ADX) and Azure Data Lake Storage (ADLS), FinOps hubs provide a scalable platform to unify billing data across providers leveraging FOCUS datasets.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this post, we’ll take a hands-on technical walkthrough of how to connect Microsoft FinOps hubs to Google Cloud, enabling you to export and analyze Google Cloud billing data with Azure billing data directly within your FinOps hub instance. This walk through will focus on using only storage in the hub for accessing data and is designed to get you started and understand multicloud connection and reporting from FinOps hubs. For large datasets Azure Data Explorer or Microsoft Fabric is recommended.&lt;/P&gt;
&lt;P data-start="376" data-end="646"&gt;With the introduction of the &lt;A class="lia-external-url" href="https://focus.finops.org/?WT.mc_id=finops-250507-grahamm" target="_blank" rel="noopener"&gt;FinOps Open Cost and Usage Specification (FOCUS)&lt;/A&gt;, normalizing billing data and reporting it through a single-pane-of-glass experience has never been easier.&lt;/P&gt;
&lt;P data-start="648" data-end="1132"&gt;As a long-time contributor to the FOCUS working group, I’ve spent the past few years helping define standards to make multicloud reporting simpler and more actionable. FOCUS enables side-by-side views of cost and usage data—such as compute hours across cloud providers—helping organizations make better decisions around workload placement and right-sizing. Before FOCUS, this kind of unified analysis was incredibly challenging due to the differing data models used by each provider.&lt;/P&gt;
&lt;P data-start="1134" data-end="1266"&gt;To complete this technical walk through, you’ll need access to both Azure and Google Cloud—and approximately 2 to 3 hours of your time.&lt;/P&gt;
&lt;H1 data-start="177" data-end="217"&gt;Getting started: The basics you’ll need&lt;/H1&gt;
&lt;P class="lia-align-justify" data-start="219" data-end="290"&gt;Before diving in, ensure you have the following prerequisites in place:&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="296" data-end="343"&gt;Access to your Google Cloud billing account&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="348" data-end="374"&gt;A Google Cloud project&lt;/STRONG&gt; with &lt;STRONG data-start="380" data-end="392"&gt;BigQuery&lt;/STRONG&gt; and other APIs enabled and linked to your billing account.&lt;/P&gt;
&lt;P&gt;✅ All required &lt;STRONG data-start="445" data-end="474"&gt;IAM roles and permissions&lt;/STRONG&gt; for working with BigQuery, Cloud Functions, Storage, and billing data (detailed below).&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="566" data-end="593"&gt;Detailed billing export&lt;/STRONG&gt; and &lt;STRONG data-start="598" data-end="616"&gt;pricing export&lt;/STRONG&gt; configured in Google Cloud.&lt;/P&gt;
&lt;P&gt;✅ An &lt;STRONG&gt;existing&lt;/STRONG&gt; deployment of FinOps hubs.&lt;/P&gt;
&lt;H1 data-start="729" data-end="760"&gt;What you’ll be building&lt;/H1&gt;
&lt;P data-start="762" data-end="941"&gt;In this walk-through, you’ll set up Google billing exports and an Azure Data Factory pipeline to fetch the exported data, convert to parquet and ingest into your FinOps hub storage, following the FOCUS 1.0 standard for normalization.&lt;/P&gt;
&lt;P data-start="943" data-end="952"&gt;Through the process you should end up creating:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG data-start="957" data-end="986"&gt;Configure a BigQuery view&lt;/STRONG&gt; to convert detailed billing exports into the FOCUS 1.0 schema.&lt;/LI&gt;
&lt;LI data-start="1049" data-end="1142"&gt;&lt;STRONG data-start="1052" data-end="1079"&gt;Create a metadata table in BigQuery&lt;/STRONG&gt; to track export timestamps to enable incremental data exports reducing file export sizes and avoiding duplicate data.&lt;/LI&gt;
&lt;LI data-start="1143" data-end="1214"&gt;&lt;STRONG data-start="1146" data-end="1169"&gt;Set up a GCS bucket&lt;/STRONG&gt; to export FOCUS-formatted data in CSV format.&lt;/LI&gt;
&lt;LI data-start="1215" data-end="1300"&gt;&lt;STRONG data-start="1218" data-end="1245"&gt;Deploy a Google Cloud Function&lt;/STRONG&gt; that performs incremental exports from BigQuery to GCS.&lt;/LI&gt;
&lt;LI data-start="1215" data-end="1300"&gt;&lt;STRONG&gt;Create a Google Cloud Schedule&amp;nbsp;&lt;/STRONG&gt;to automate the export of your billing data to Google Cloud Storage.&lt;/LI&gt;
&lt;LI data-start="1301" data-end="1502"&gt;&lt;STRONG data-start="1304" data-end="1346"&gt;Build a pipeline in Azure Data Factory&lt;/STRONG&gt; to:
&lt;UL data-start="1354" data-end="1502"&gt;
&lt;LI data-start="1354" data-end="1394"&gt;Fetch the CSV billing exports from Google Cloud Storage.&lt;/LI&gt;
&lt;LI data-start="1398" data-end="1423"&gt;Convert them to Parquet.&lt;/LI&gt;
&lt;LI data-start="1427" data-end="1502"&gt;Ingest the transformed data into your FinOps hub &lt;STRONG&gt;ingestion&lt;/STRONG&gt; container.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Let's get started. We're going to start in&lt;SPAN class="lia-text-color-21"&gt; Google Cloud&amp;nbsp;&lt;/SPAN&gt;before we jump back into Azure to setup the Data Factory pipeline.&lt;/P&gt;
&lt;H1 data-start="378" data-end="416"&gt;Enabling FOCUS exports in Google&lt;/H1&gt;
&lt;H3 data-start="1570" data-end="1624"&gt;Prerequisite: Enable detailed billing &amp;amp; pricing exports&lt;/H3&gt;
&lt;P data-start="1628" data-end="1705"&gt;⚠️&amp;nbsp;&lt;EM data-start="1631" data-end="1705"&gt;You cannot complete this guide without billing data enabled in BigQuery if you have not enabled detailed billing exports and pricing exports, do this now and come back to the walk-through in 24 hours.&lt;/EM&gt;&lt;/P&gt;
&lt;P data-start="1628" data-end="1705"&gt;Steps to enabled detailed billing exports and pricing exports:&lt;/P&gt;
&lt;OL data-start="1721" data-end="1926"&gt;
&lt;LI data-start="1721" data-end="1764"&gt;Navigate to &lt;STRONG data-start="1736" data-end="1764"&gt;Billing &amp;gt; Billing Export&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI data-start="1765" data-end="1811"&gt;Enable &lt;STRONG data-start="1775" data-end="1811"&gt;Detailed Cost Export to BigQuery&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI data-start="1812" data-end="1855"&gt;Select the billing project and a dataset - if you have not created a project for billing do so now.&lt;/LI&gt;
&lt;LI data-start="1878" data-end="1926"&gt;Enable &lt;STRONG data-start="1888" data-end="1906"&gt;Pricing Export&lt;/STRONG&gt; to the same dataset.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P data-start="1928" data-end="2023"&gt;🔊 &lt;EM data-start="1931" data-end="2023"&gt;“This enables daily cost and usage data to be streamed to BigQuery for granular analysis.”&lt;/EM&gt;&lt;/P&gt;
&lt;P data-start="1928" data-end="2023"&gt;Detailed guidance and information on billing exports in Google can be found here: &lt;A href="https://cloud.google.com/billing/docs/how-to/export-data-bigquery" target="_blank" rel="noopener"&gt;Google Billing Exports&lt;/A&gt;.&lt;/P&gt;
&lt;H3 data-start="729" data-end="760"&gt;What you'll create:&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Service category table&lt;/LI&gt;
&lt;LI&gt;Metadata table&lt;/LI&gt;
&lt;LI&gt;FOCUS View - you must have detailed billing export and pricing exports enabled to create this view&lt;/LI&gt;
&lt;LI&gt;Cloud Function&lt;/LI&gt;
&lt;LI&gt;Cloud Schedule&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="418" data-end="441"&gt;What you'll need&lt;/H3&gt;
&lt;UL data-start="473" data-end="544"&gt;
&lt;LI data-start="473" data-end="510"&gt;An active &lt;STRONG data-start="487" data-end="510"&gt;GCP Billing Account&lt;/STRONG&gt; (this is your payment method).&lt;/LI&gt;
&lt;LI data-start="511" data-end="544"&gt;A GCP Project (new or existing) linked to your GCP billing account.&lt;/LI&gt;
&lt;LI data-start="511" data-end="544"&gt;
&lt;P&gt;All required APIs enabled.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="511" data-end="544"&gt;
&lt;P&gt;All required IAM roles enabled.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Enable Required APIs:&lt;/H3&gt;
&lt;UL data-start="575" data-end="754"&gt;
&lt;LI data-start="575" data-end="591"&gt;BigQuery API&lt;/LI&gt;
&lt;LI data-start="592" data-end="613"&gt;Cloud Billing API&lt;/LI&gt;
&lt;LI data-start="614" data-end="633"&gt;Cloud Build API&lt;/LI&gt;
&lt;LI data-start="634" data-end="653"&gt;Cloud Scheduler&lt;/LI&gt;
&lt;LI data-start="654" data-end="673"&gt;Cloud Functions&lt;/LI&gt;
&lt;LI data-start="674" data-end="691"&gt;Cloud Storage&lt;/LI&gt;
&lt;LI data-start="692" data-end="711"&gt;Cloud Run Admin&lt;/LI&gt;
&lt;LI data-start="712" data-end="754"&gt;Pub/Sub &lt;EM data-start="722" data-end="754"&gt;(optional, for event triggers)&lt;/EM&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="756" data-end="782"&gt;Required IAM Roles&lt;/H3&gt;
&lt;P data-start="783" data-end="842"&gt;Assign the following roles to your user account:&lt;/P&gt;
&lt;UL data-start="843" data-end="1119"&gt;
&lt;LI data-start="843" data-end="886"&gt;roles/billing.viewer or billing.admin&lt;/LI&gt;
&lt;LI data-start="887" data-end="916"&gt;roles/bigquery.dataEditor&lt;/LI&gt;
&lt;LI data-start="917" data-end="940"&gt;roles/storage.admin&lt;/LI&gt;
&lt;LI data-start="941" data-end="971"&gt;roles/cloudfunctions.admin&lt;/LI&gt;
&lt;LI data-start="972" data-end="1002"&gt;roles/cloudscheduler.admin&lt;/LI&gt;
&lt;LI data-start="1003" data-end="1043"&gt;roles/iam.serviceAccountTokenCreator&lt;/LI&gt;
&lt;LI data-start="1044" data-end="1076"&gt;roles/cloudfunctions.invoker&lt;/LI&gt;
&lt;LI data-start="1077" data-end="1119"&gt;roles/run.admin &lt;EM data-start="1097" data-end="1119"&gt;(if using Cloud Run)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-start="1077" data-end="1119"&gt;roles/project.editor&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="1121" data-end="1176"&gt;Create a service account (e.g., svc-bq-focus)&lt;/H3&gt;
&lt;P data-start="1177" data-end="1204"&gt;Assign the following roles to your service account:&lt;/P&gt;
&lt;UL data-start="1205" data-end="1385"&gt;
&lt;LI data-start="1205" data-end="1233"&gt;roles/bigquery.dataOwner&lt;/LI&gt;
&lt;LI data-start="1234" data-end="1263"&gt;roles/storage.objectAdmin&lt;/LI&gt;
&lt;LI data-start="1264" data-end="1296"&gt;roles/cloudfunctions.invoker&lt;/LI&gt;
&lt;LI data-start="1297" data-end="1327"&gt;roles/cloudscheduler.admin&lt;/LI&gt;
&lt;LI data-start="1328" data-end="1365"&gt;roles/serviceAccount.tokenCreator&lt;/LI&gt;
&lt;LI data-start="1366" data-end="1385"&gt;roles/run.admin&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="1387" data-end="1463"&gt;Your default compute service account will also require access to run cloud build services. Ensure you apply the cloud build role to your default compute service account in your project, it may look like this:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;projectID&lt;/EM&gt;&lt;/STRONG&gt;-compute@developer.gserviceaccount.com&lt;/P&gt;
&lt;P&gt;→ roles/cloudbuild.builds.builder&lt;/P&gt;
&lt;H3&gt;Create FOCUS data structure and View&lt;/H3&gt;
&lt;P&gt;This section will create two new tables in Big Query, one for service category mappings and one for metadata related to export times. These are important to get in before we create the FOCUS view to extract billing data in FOCUS format.&lt;/P&gt;
&lt;H3&gt;Create a service category mapping table&lt;/H3&gt;
&lt;P data-start="1928" data-end="2023"&gt;I removed service category from the original google FOCUS view to reduce the size of the SQL Query, therefore, to ensure we mapped Service category properly, I created a new service category table and joined it to the FOCUS view.&lt;/P&gt;
&lt;P data-start="1928" data-end="2023"&gt;In this step we will create a new table using open data to map GCP services to service category. Doing this helps reduce the size of the SQL query and simplifies management of Service Category mapping. Leveraging open source data we can easily update service category mappings if they ever change or new categories are added without impacting the FOCUS view query.&lt;/P&gt;
&lt;H6 data-start="1928" data-end="2023"&gt;Process:&lt;/H6&gt;
&lt;UL data-start="2201" data-end="2462"&gt;
&lt;LI data-start="2201" data-end="2339"&gt;Download the latest service_category_mapping.csv from the &lt;A href="https://github.com/finopsfoundation/focus_converters" target="_blank" rel="noopener" data-start="2263" data-end="2339"&gt;FOCUS Converter repo&lt;/A&gt;&lt;/LI&gt;
&lt;LI data-start="2340" data-end="2390"&gt;Go to &lt;STRONG data-start="2348" data-end="2390"&gt;BigQuery &amp;gt; Your Dataset &amp;gt; Create Table&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="2391" data-end="2407"&gt;Upload the CSV&lt;/LI&gt;
&lt;LI data-start="2408" data-end="2440"&gt;Table name: service_category&lt;/LI&gt;
&lt;LI data-start="2441" data-end="2462"&gt;Schema: Auto-detect&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="2469" data-end="2500"&gt;Create a metadata table&lt;/H3&gt;
&lt;P data-start="2502" data-end="2561"&gt;This table will be used to track the last time detailed billing data was added to your detailed billing export, we use this to enable incremental exports of billing data through the FOCUS view to ensure we only export the latest set of data and not everything all the time.&lt;/P&gt;
&lt;H6 data-start="2563" data-end="2579"&gt;Process:&lt;/H6&gt;
&lt;UL data-start="2580" data-end="2732"&gt;
&lt;LI data-start="2580" data-end="2615"&gt;Go to &lt;STRONG data-start="2588" data-end="2615"&gt;BigQuery &amp;gt; Create Table&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="2616" data-end="2653"&gt;&lt;STRONG&gt;Table name: &lt;/STRONG&gt;metadata_focus_export&lt;/LI&gt;
&lt;LI data-start="2654" data-end="2732"&gt;&lt;STRONG style="font-weight: bold;"&gt;Schema:&lt;/STRONG&gt;&lt;BR /&gt;&lt;LI-CODE lang="textile"&gt;Field Name : Format
last_export_time: TIMESTAMP
export_message: STRING

Enter your field name and then choose field format, do not add :&lt;/LI-CODE&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="2734" data-end="2809"&gt;🔊 &lt;EM data-start="2737" data-end="2809"&gt;“Ensures each export only includes new data since the last timestamp.”&lt;/EM&gt;&lt;/P&gt;
&lt;H3 data-start="2816" data-end="2853"&gt;Create the FOCUS-aligned view&lt;/H3&gt;
&lt;P&gt;Creating a view in BigQuery allows us to un-nest the detailed billing export tables into the format of FOCUS 1.0*. To use Power BI we must un-nest the tables so this step is required. It also ensures we map the right columns in Google Cloud detailed billing export to the right columns in FOCUS.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class="" data-start="2931" data-end="3009"&gt;⚠️ &lt;EM data-start="2934" data-end="3009"&gt;The FOCUS SQL code provided in this walk-through has been altered from the original Google provided code. I believe this new code is better formatted for FOCUS 1.0 than the original however it does contain some nuances that suit my personal views. Please evaluate this carefully before using this in a production system and adjust the code accordingly to your needs.&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H6 data-start="3011" data-end="3025"&gt;Steps:&lt;/H6&gt;
&lt;UL data-start="3026" data-end="3266"&gt;
&lt;LI data-start="3026" data-end="3060"&gt;Navigate to BigQuery &amp;gt; New Query&lt;/LI&gt;
&lt;LI data-start="3061" data-end="3109"&gt;Paste and update the FOCUS view SQL query which is provided below&lt;/LI&gt;
&lt;LI data-start="3110" data-end="3266"&gt;Replace:
&lt;UL data-start="3123" data-end="3266"&gt;
&lt;LI data-start="3123" data-end="3169"&gt;&lt;STRONG&gt;yourexporttable&lt;/STRONG&gt; with detailed export dataset ID and table name that will look like "&lt;/LI&gt;
&lt;LI data-start="3172" data-end="3218"&gt;&lt;STRONG&gt;yourpricingexporttable&lt;/STRONG&gt; with pricing export and table name&lt;/LI&gt;
&lt;LI data-start="3221" data-end="3266"&gt;&lt;STRONG&gt;your_billing_dataset&lt;/STRONG&gt; with your detailed export dataset ID and table name&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI style="font-weight: bold;"&gt;&lt;STRONG&gt;FOCUS SQL Query:&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="sql"&gt;WITH usage_export AS ( 
  SELECT
    *,
    (
      SELECT AS STRUCT type, id, full_name, amount, name
      FROM UNNEST(credits)
      LIMIT 1
    ) AS cud,
  FROM
    "Your-Detailed-Billing-Export-ID"
  -- replace with your detailed usage export table path
),
prices AS (
  SELECT
  export_time,
  sku.id AS sku_id,
  sku.description AS sku_description,
  service.id AS service_id,
  service.description AS service_description,
  tier.*
  FROM
    "your_pricing_export_id",
    UNNEST(list_price.tiered_rates) AS tier
)
SELECT
  "111111-222222-333333" AS BillingAccountId,
  "Your Company Name" AS BillingAccountName,
   COALESCE((SELECT SUM(x.amount)
    FROM UNNEST(usage_export.credits) x),0) + cost as BilledCost,
  usage_export.currency AS BillingCurrency,
  DATETIME(PARSE_DATE("%Y%m", invoice.month)) AS BillingPeriodStart,
  DATETIME(DATE_SUB(DATE_ADD(PARSE_DATE("%Y%m", invoice.month), INTERVAL 1 MONTH), INTERVAL 1 DAY)) AS BillingPeriodEnd,
  CASE
  WHEN usage_export.adjustment_info.type IS NOT NULL and usage_export.adjustment_info.type !='' THEN 'Adjustment'
  WHEN usage_export.cud.type = 'PROMOTION' AND usage_export.cost_type = 'regular' AND usage_export.cud.id IS NOT NULL THEN 'Credit'
  WHEN usage_export.sku.description LIKE '%Commitment - 3 years - dollar based VCF%' or usage_export.sku.description LIKE '%Prepay Commitment%' THEN 'Purchase'
  WHEN usage_export.cud.id IS NOT NULL AND usage_export.cud.id != '' THEN 'Credit'
  WHEN usage_export.cost_type = 'regular' THEN 'Usage'
  WHEN usage_export.cost_type = 'tax' THEN 'Tax' 
  WHEN usage_export.cost_type = 'adjustment' THEN 'Adjustment'
  WHEN usage_export.cost_type = 'rounding_error' THEN 'Adjustment'
  ELSE usage_export.cost_type 
  END AS ChargeCategory,
  IF(COALESCE(
    usage_export.adjustment_info.id,
    usage_export.adjustment_info.description,
    usage_export.adjustment_info.type,
    usage_export.adjustment_info.mode)
    IS NOT NULL,
    "correction",
    NULL) AS ChargeClass,
  CASE
  WHEN usage_export.adjustment_info.type IS NOT NULL AND usage_export.adjustment_info.type != '' THEN usage_export.adjustment_info.type
  ELSE usage_export.sku.description
  END AS ChargeDescription,
  CAST(usage_export.usage_start_time AS DATETIME) AS ChargePeriodStart,
  CAST(usage_export.usage_end_time AS DATETIME) AS ChargePeriodEnd,
  CASE usage_export.cud.type
    WHEN "COMMITTED_USAGE_DISCOUNT_DOLLAR_BASE" THEN "Spend"
    WHEN "COMMITTED_USAGE_DISCOUNT" THEN "Usage"
  END AS CommitmentDiscountCategory,
  usage_export.cud.id AS CommitmentDiscountId,
  COALESCE (usage_export.cud.full_name, usage_export.cud.name) AS CommitmentDiscountName,
  usage_export.cud.type AS CommitmentDiscountType,
  CAST(usage_export.usage.amount_in_pricing_units AS numeric) AS ConsumedQuantity,
  usage_export.usage.pricing_unit AS ConsumedUnit,
  -- review
   CAST(
    CASE 
    WHEN usage_export.cost_type = "regular" THEN usage_export.price.effective_price * usage_export.price.pricing_unit_quantity
    ELSE 0
    END AS NUMERIC
    ) AS ContractedCost,
    --
  CAST(usage_export.price.effective_price AS numeric) AS ContractedUnitPrice,
  usage_export.seller_name AS InvoiceIssuerName,
    COALESCE((SELECT SUM(x.amount)
    FROM UNNEST(usage_export.credits) x),0) + cost as EffectiveCost,
  CAST(usage_export.cost_at_list AS numeric) AS ListCost,
  prices.account_currency_amount AS ListUnitPrice,
  IF(
      usage_export.cost_type = "regular",
      IF(
        LOWER(usage_export.sku.description) LIKE "commitment%" OR usage_export.cud IS NOT NULL,
        "committed",
        "standard"),
      null) AS PricingCategory,
  IF(usage_export.cost_type = 'regular', usage_export.price.pricing_unit_quantity, NULL) AS PricingQuantity,
  IF(usage_export.cost_type = 'regular', usage_export.price.unit, NULL) AS PricingUnit,
  'Google'AS ProviderName,
  usage_export.transaction_type AS PublisherName,
  usage_export.location.region AS RegionId,
  usage_export.location.region AS RegionName,
  usage_export.service.id AS ResourceId,
  REGEXP_EXTRACT (usage_export.resource.global_name, r'[^/]+$') AS ResourceName,
  usage_export.sku.description AS ResourceType,
 COALESCE(servicemapping.string_field_1, 'Other') AS ServiceCategory,
  usage_export.service.description AS ServiceName,
  usage_export.sku.id AS SkuId,
  CONCAT("SKU ID:", usage_export.sku.id, ", Price Tier Start Amount: ", price.tier_start_amount) AS SkuPriceId,
  usage_export.project.id AS SubAccountId,
  usage_export.project.name AS SubAccountName,
  (SELECT CONCAT('{', STRING_AGG(FORMAT('%s:%s', kv.key, kv.value), ', '), '}') 
   FROM (
     SELECT key, value FROM UNNEST(usage_export.project.labels)
     UNION ALL
     SELECT key, value FROM UNNEST(usage_export.tags)
     UNION ALL
     SELECT key, value FROM UNNEST(usage_export.labels)
   ) AS kv) AS Tags,
  FORMAT_DATE('%B', PARSE_DATE('%Y%m', invoice.month)) AS Month,
  usage_export.project.name AS x_ResourceGroupName,
  CAST(usage_export.export_time AS TIMESTAMP) AS export_time,
FROM
  usage_export
  LEFT JOIN
  "Your-Service-Category-Id".ServiceCategory AS servicemapping
ON
  usage_export.service.description = servicemapping.string_field_0
LEFT JOIN
  prices
ON
 usage_export.sku.id = prices.sku_id
 AND usage_export.price.tier_start_amount = prices.start_usage_amount
 AND DATE(usage_export.export_time) = DATE(prices.export_time);&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-start="3268" data-end="3358"&gt;🔊 &lt;EM data-start="3271" data-end="3358"&gt;"This creates a FOCUS-aligned view of your billing data using FOCUS 1.0 specification, this view does not 100% conform to FOCUS 1.0.&lt;/EM&gt;&lt;/P&gt;
&lt;H3 data-start="3365" data-end="3404"&gt;Create GCS Bucket for CSV Exports&lt;/H3&gt;
&lt;P&gt;Your GCS bucket is where you will place your incremental exports to be exported to Azure. Once your data is exported to Azure you may elect to delete the files in the bucket, the metaata table keeps a record of the last export time.&lt;/P&gt;
&lt;H6 data-start="3406" data-end="3420"&gt;Steps:&lt;/H6&gt;
&lt;UL data-start="3421" data-end="3614"&gt;
&lt;LI data-start="3421" data-end="3462"&gt;Go to &lt;STRONG data-start="3429" data-end="3462"&gt;Cloud Storage &amp;gt; Create Bucket&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="3463" data-end="3490"&gt;Name: focus-cost-export (or any name you would like)&lt;/LI&gt;
&lt;LI data-start="3491" data-end="3526"&gt;Region: Match your dataset region&lt;/LI&gt;
&lt;LI data-start="3527" data-end="3552"&gt;Storage Class: Nearline (cheaper to use Earline but standard will also work just fine)&lt;/LI&gt;
&lt;LI data-start="3553" data-end="3614"&gt;Enable Interoperability settings &amp;gt; create access/secret key
&lt;UL data-start="3421" data-end="3614"&gt;
&lt;LI data-start="3553" data-end="3614"&gt;The access key and secret are tied to your user account, if you want to be able to use this with multiple people, create an access key for your service account - recommended for Prod, for this guide purpose, an access key linked to your account is fine.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI aria-level="1"&gt;Save the access key and secret to a secure location to use later as part of the ADF pipeline setup.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="3616" data-end="3703"&gt;🔊 &lt;EM data-start="3619" data-end="3703"&gt;“This bucket will store daily CSVs. Consider enabling lifecycle cleanup policies.”&lt;/EM&gt;&lt;/P&gt;
&lt;H3 data-start="3710" data-end="3760"&gt;Create a Cloud Function for incremental export&lt;/H3&gt;
&lt;P data-start="3762" data-end="3844"&gt;A cloud function is used here to enable incremental exports of your billing data in FOCUS format on a regular schedule. &lt;EM&gt;At present there is no known supported on demand export service from Google, so we came up with this little workaround&lt;/EM&gt;.&lt;/P&gt;
&lt;P data-start="3762" data-end="3844"&gt;The function is designed to evaluate your billing data for last export time that is equals to or greater than the last time the function ran. To do this we look at the export_time column and the metadata table for the last time we ran this. This ensure we only export the most recent billing data which aids in reducing data export costs to Azure.&lt;/P&gt;
&lt;P data-start="3762" data-end="3844"&gt;This process is done through the GCP GUI using an inline editor to create the cloud function in the cloud run service.&lt;/P&gt;
&lt;H6 data-start="3846" data-end="3860"&gt;Steps:&lt;/H6&gt;
&lt;OL data-start="3861" data-end="4273"&gt;
&lt;LI aria-level="1"&gt;Go to Cloud Run &amp;gt; Write Function&lt;/LI&gt;
&lt;LI aria-level="1"&gt;Select &amp;gt; Use Inline editor to create a function&lt;/LI&gt;
&lt;LI aria-level="1"&gt;Service Name: &lt;EM&gt;&lt;STRONG&gt;daily_focus_export&lt;/STRONG&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI aria-level="1"&gt;Region, the same region as your dataset - in our demo case us-central1&lt;/LI&gt;
&lt;LI aria-level="1"&gt;Use settings:
&lt;UL&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Runtime: &lt;/STRONG&gt;Python 3.11 (you cannot use anything later than 3.11)&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Trigger: &lt;/STRONG&gt;Optional&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Authentication: &lt;/STRONG&gt;Require Authentication&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Billing: &lt;/STRONG&gt;Request based&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Service Scaling:&lt;/STRONG&gt; Auto-scaling set to 0&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Ingress:&lt;/STRONG&gt; All&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Containers:&lt;/STRONG&gt; leave all settings as set&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Volumes:&lt;/STRONG&gt; Leave all settings as set&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Networking:&lt;/STRONG&gt; Leave all settings as set&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Security:&lt;/STRONG&gt; Choose the service account you created earlier&lt;/LI&gt;
&lt;LI aria-level="2"&gt;&lt;STRONG&gt;Save&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI aria-level="1"&gt;Create&lt;STRONG&gt; main.py &lt;/STRONG&gt;file and &lt;STRONG&gt;requirements.txt &lt;/STRONG&gt;files through the inline editor
&lt;UL&gt;
&lt;LI aria-level="2"&gt;For &lt;STRONG&gt;requirements.txt&lt;/STRONG&gt; copy and paste the below:
&lt;UL&gt;
&lt;LI aria-level="3"&gt;functions-framework==3.*&lt;/LI&gt;
&lt;LI aria-level="3"&gt;google-cloud-bigquery&lt;/LI&gt;
&lt;LI aria-level="3"&gt;Google-cloud-storage&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI aria-level="2"&gt;For &lt;STRONG&gt;main.py&lt;/STRONG&gt; your function entry point is:&lt;STRONG&gt; export_focus_data&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Paste the code below into your main.py inline editor window&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="sql"&gt;import logging
import time
import json
from google.cloud import bigquery, storage

logging.basicConfig(level=logging.INFO)

def export_focus_data(request):
    bq_client = bigquery.Client()
    storage_client = storage.Client()

    project_id = "YOUR-ProjectID"
    dataset = "YOUR-Detailed-Export-Dataset"
    view = "YOUR-FOCUS-View-Name"
    metadata_table = "Your-Metadata-Table"
    job_name = "The name you want to call the job for the export"
    bucket_base = "gs://&amp;lt;your bucketname&amp;gt;/&amp;lt;your foldername&amp;gt;"
    bucket_name = "Your Bucket Name"
    metadata_file_path = "Your-Bucket-name/export_metadata.json"

    try:
        logging.info("🔁 Starting incremental export based on export_time...")

        # Step 1: Get last export_time from metadata
        metadata_query = f"""
            SELECT last_export_time
            FROM `{project_id}.{dataset}.{metadata_table}`
            WHERE job_name = '{job_name}'
            LIMIT 1
        """
        metadata_result = list(bq_client.query(metadata_query).result())
        if not metadata_result:
            return "No metadata row found. Please seed export_metadata.", 400
        last_export_time = metadata_result[0].last_export_time
        logging.info(f"📌 Last export_time from metadata: {last_export_time}")

        # Step 2: Check for new data
        check_data_query = f"""
            SELECT COUNT(*) AS row_count
            FROM `{project_id}.{dataset}.{view}`
            WHERE export_time &amp;gt;= TIMESTAMP('{last_export_time}')
        """
        row_count = list(bq_client.query(check_data_query).result())[0].row_count
        if row_count == 0:
            logging.info("✅ No new data to export.")
            return "No new data to export.", 204

        # Step 3: Get distinct export months
        folder_query = f"""
            SELECT DISTINCT FORMAT_DATETIME('%Y%m', BillingPeriodStart) AS export_month
            FROM `{project_id}.{dataset}.{view}`
            WHERE export_time &amp;gt;= TIMESTAMP('{last_export_time}')
              AND BillingPeriodStart IS NOT NULL
        """
        export_months = [row.export_month for row in bq_client.query(folder_query).result()]
        logging.info(f"📁 Exporting rows from months: {export_months}")

        # Step 4: Export data for each month
        for export_month in export_months:
            export_path = f"{bucket_base}/{export_month}/export_{int(time.time())}_*.csv"
            export_query = f"""
                EXPORT DATA OPTIONS(
                    uri='{export_path}',
                    format='CSV',
                    overwrite=true,
                    header=true,
                    field_delimiter=';'
                ) AS
                SELECT *
                FROM `{project_id}.{dataset}.{view}`
                WHERE export_time &amp;gt;= TIMESTAMP('{last_export_time}')
                  AND FORMAT_DATETIME('%Y%m', BillingPeriodStart) = '{export_month}'
            """
            bq_client.query(export_query).result()

        # Step 5: Get latest export_time from exported rows
        max_export_time_query = f"""
            SELECT MAX(export_time) AS new_export_time
            FROM `{project_id}.{dataset}.{view}`
            WHERE export_time &amp;gt;= TIMESTAMP('{last_export_time}')
        """
        new_export_time = list(bq_client.query(max_export_time_query).result())[0].new_export_time

        # Step 6: Update BigQuery metadata table
        update_query = f"""
            MERGE `{project_id}.{dataset}.{metadata_table}` T
            USING (
                SELECT '{job_name}' AS job_name, TIMESTAMP('{new_export_time}') AS new_export_time
            ) S
            ON T.job_name = S.job_name
            WHEN MATCHED THEN
                UPDATE SET last_export_time = S.new_export_time
            WHEN NOT MATCHED THEN
                INSERT (job_name, last_export_time) VALUES (S.job_name, S.new_export_time)
        """
        bq_client.query(update_query).result()

        # Step 7: Write metadata JSON to GCS
        blob = storage_client.bucket(bucket_name).blob(metadata_file_path)
        blob.upload_from_string(
            json.dumps({"last_export_time": new_export_time.isoformat()}),
            content_type="application/json"
        )
        logging.info(f"📄 Metadata file written to GCS: gs://{bucket_name}/{metadata_file_path}")

        return f"✅ Export complete. Metadata updated to {new_export_time}", 200

    except Exception as e:
        logging.exception("❌ Incremental export failed:")
        return f"Function failed: {str(e)}", 500&lt;/LI-CODE&gt;
&lt;P data-start="4275" data-end="4345"&gt;Before saving, update variables like project_id, bucket_name, etc.&lt;/P&gt;
&lt;P data-start="4347" data-end="4444"&gt;🔊 &lt;EM data-start="4350" data-end="4444"&gt;“This function exports new billing data based on the last timestamp in your metadata table.”&lt;/EM&gt;&lt;/P&gt;
&lt;H3 data-start="4451" data-end="4479"&gt;Test the Cloud Function&lt;/H3&gt;
&lt;UL&gt;
&lt;LI data-start="4481" data-end="4518"&gt;Deploy and click &lt;STRONG data-start="4501" data-end="4518"&gt;Test Function&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Ensure a seed export_metadata.json file is uploaded to your GCS bucket (if you have not uploaded a seed export file the function will not run. Example file is below
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN style="font-style: var(--lia-blog-font-style); font-family: var(--lia-blog-font-family); font-size: var(--lia-bs-font-size-base);"&gt;{ "last_export_time": "2024-12-31T23:59:59.000000+00:00" }&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-start="4595" data-end="4643"&gt;Confirm new CSVs appear in your target folder&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="4650" data-end="4685"&gt;Automate with Cloud Scheduler&lt;/H3&gt;
&lt;P data-start="4687" data-end="4759"&gt;This step will set up an automated schedule to run your cloud function on a daily or hourly pattern, you may adjust the frequency to your desired schedule, this demo uses the same time each day at 11pm.&lt;/P&gt;
&lt;H6 data-start="4761" data-end="4775"&gt;Steps:&lt;/H6&gt;
&lt;UL data-start="4776" data-end="4982"&gt;
&lt;LI data-start="4776" data-end="4816"&gt;Go to &lt;STRONG data-start="4784" data-end="4816"&gt;Cloud Scheduler &amp;gt; Create Job&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Region: Same region as your Function - This Demo us-central1&lt;/LI&gt;
&lt;LI data-start="4817" data-end="4845"&gt;Name: daily-focus-export&lt;/LI&gt;
&lt;LI data-start="4846" data-end="4888"&gt;Frequency: 0 */6 * * * (every 6 hours)&lt;STRONG&gt; or&amp;nbsp;&lt;/STRONG&gt;Frequency: 0 23 * * * (daily at 11 PM)&lt;/LI&gt;
&lt;LI&gt;Time zone: your desired time zone&lt;/LI&gt;
&lt;LI data-start="4889" data-end="4903"&gt;Target: HTTP&lt;/LI&gt;
&lt;LI data-start="4904" data-end="4944"&gt;Auth: OIDC Token → Use service account&lt;/LI&gt;
&lt;LI&gt;Click CREATE&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="4984" data-end="5069"&gt;🔊 "This step automates the entire pipeline to run daily and keep downstream platforms updated with the latest billing data."&lt;/P&gt;
&lt;H1 data-start="182" data-end="242"&gt;Wrapping up Google setup&lt;/H1&gt;
&lt;P data-start="244" data-end="478"&gt;&lt;STRONG data-start="244" data-end="283"&gt;Wow—there was a lot to get through!&lt;/STRONG&gt; But now that you’ve successfully enabled FOCUS-formatted exports in Google Cloud, you're ready for the next step: connecting Azure to your Google Cloud Storage bucket and ingesting the data into your FinOps hub instance.&lt;/P&gt;
&lt;P data-start="480" data-end="624"&gt;This is where everything comes together—enabling unified, multi-cloud reporting in your Hub across &lt;STRONG data-start="579" data-end="623"&gt;both Azure and Google Cloud billing data&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P data-start="626" data-end="790"&gt;Let’s dive into building the &lt;STRONG data-start="655" data-end="692"&gt;Data Factory pipeline&lt;/STRONG&gt; and the &lt;STRONG data-start="701" data-end="724"&gt;associated datasets&lt;/STRONG&gt; needed to fetch, transform, and load your Google billing exports.&lt;/P&gt;
&lt;H1 data-start="144" data-end="189"&gt;Connecting Azure to Google billing data&lt;/H1&gt;
&lt;P data-start="191" data-end="522"&gt;With your Google Cloud billing data now exporting in FOCUS format, the next step is to bring it into your Azure environment for centralized FinOps reporting. Using &lt;STRONG data-start="355" data-end="383"&gt;Data Factory&lt;/STRONG&gt;, we'll build a pipeline to fetch the CSVs from your Google Cloud Storage bucket, convert them to Parquet, and land them in your FinOps Hub storage account.&lt;/P&gt;
&lt;H3 data-start="554" data-end="589"&gt;Azure access and prerequisites&lt;/H3&gt;
&lt;UL data-start="590" data-end="794"&gt;
&lt;LI data-start="590" data-end="622"&gt;Access to the Azure Portal&lt;/LI&gt;
&lt;LI data-start="590" data-end="622"&gt;Access to the resource group your hub has been deployed to&lt;/LI&gt;
&lt;LI data-start="590" data-end="622"&gt;Contributor access to your resource group&lt;/LI&gt;
&lt;LI data-start="590" data-end="622"&gt;At a minimum storage account contributor and storage blob data owner roles&lt;/LI&gt;
&lt;LI data-start="623" data-end="703"&gt;
&lt;P&gt;An existing deployment of the Microsoft FinOps Hub Toolkit&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="704" data-end="794"&gt;Admin rights on Azure Data Factory (or at least contributor role on ADF)&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="796" data-end="829"&gt;Services and tools required&lt;/H3&gt;
&lt;P data-start="830" data-end="883"&gt;Make sure the following Azure resources are in place:&lt;/P&gt;
&lt;UL data-start="884" data-end="1104"&gt;
&lt;LI data-start="884" data-end="913"&gt;Azure Data Factory instance&lt;/LI&gt;
&lt;LI data-start="914" data-end="995"&gt;A linked &lt;STRONG data-start="925" data-end="950"&gt;Azure Storage Account&lt;/STRONG&gt; (this is where FinOps Hub is expecting data)&lt;/LI&gt;
&lt;LI data-start="1054" data-end="1104"&gt;(Optional) Azure Key Vault for secret management&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="1111" data-end="1136"&gt;Pipeline Overview&lt;/H3&gt;
&lt;P data-start="1138" data-end="1181"&gt;We’ll be creating the following components in Azure Data Factory&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-color-19 lia-border-style-solid" border="1" style="width: 100%; height: 234px; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr style="height: 27px;"&gt;&lt;th class="lia-border-color-19" style="height: 27px;"&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-20"&gt;&lt;STRONG data-start="1185" data-end="1198"&gt;Component&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/th&gt;&lt;th class="lia-border-color-19" style="height: 27px;"&gt;
&lt;P&gt;&lt;SPAN class="lia-text-color-20"&gt;&lt;STRONG data-start="1211" data-end="1222"&gt;Purpose&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="height: 27px;"&gt;&lt;td class="lia-border-color-19" style="height: 27px;"&gt;&lt;STRONG data-start="1398" data-end="1420"&gt;GCS Linked Service&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-19" style="height: 27px;"&gt;Connects ADF to your Google Cloud Storage bucket&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 51px;"&gt;&lt;td class="lia-border-color-19" style="height: 51px;"&gt;&lt;STRONG data-start="1504" data-end="1533"&gt;Azure Blob Linked Service&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-19" style="height: 51px;"&gt;Connects ADF to your Hub’s ingestion container&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td class="lia-border-color-19" style="height: 27px;"&gt;&lt;STRONG data-start="1609" data-end="1627"&gt;Source Dataset&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-19" style="height: 27px;"&gt;Reads CSV files from GCS&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 51px;"&gt;&lt;td class="lia-border-color-19" style="height: 51px;"&gt;&lt;STRONG data-start="1715" data-end="1731"&gt;Sink Dataset&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-19" style="height: 51px;"&gt;Writes Parquet files to Azure Data Lake (or Blob) in Hub's expected format&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 51px;"&gt;&lt;td class="lia-border-color-19" style="height: 51px;"&gt;&lt;STRONG data-start="1820" data-end="1838"&gt;Pipeline Logic&lt;/STRONG&gt;&lt;/td&gt;&lt;td class="lia-border-color-19" style="height: 51px;"&gt;Orchestrates the copy activity, format conversion, and metadata updates&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-start="1930" data-end="1961"&gt;Secrets and authentication&lt;/H3&gt;
&lt;P data-start="1963" data-end="2014"&gt;To connect securely from ADF to GCS, you will need:&lt;/P&gt;
&lt;UL data-start="2015" data-end="2203"&gt;
&lt;LI data-start="2015" data-end="2107"&gt;The &lt;STRONG data-start="2021" data-end="2035"&gt;access key&lt;/STRONG&gt; and &lt;STRONG data-start="2040" data-end="2054"&gt;secret&lt;/STRONG&gt;&amp;nbsp;from GCS Interoperability settings (created earlier)&lt;/LI&gt;
&lt;LI data-start="2108" data-end="2203"&gt;Store them securely in &lt;STRONG data-start="2133" data-end="2152"&gt;Azure Key Vault&lt;/STRONG&gt; or in &lt;STRONG data-start="2159" data-end="2186"&gt;ADF pipeline parameters&lt;/STRONG&gt; (if short-lived)&lt;/LI&gt;
&lt;/UL&gt;
&lt;BLOCKQUOTE&gt;
&lt;H6 data-start="2210" data-end="2235"&gt;&lt;STRONG&gt;💡 Best Practice Tip:&lt;/STRONG&gt;&lt;/H6&gt;
&lt;P data-start="2238" data-end="2423"&gt;Use&amp;nbsp;&lt;STRONG data-start="2245" data-end="2264"&gt;Azure Key Vault&lt;/STRONG&gt; to securely store GCS access credentials and reference them from ADF linked services. This improves security and manageability over hardcoding values in JSON.&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3 data-start="146" data-end="206"&gt;Create Google Cloud storage billing data dataset&lt;/H3&gt;
&lt;P data-start="208" data-end="350"&gt;Now that we're in Azure, it's time to connect to your &lt;STRONG data-start="262" data-end="293"&gt;Google Cloud Storage bucket&lt;/STRONG&gt; and begin building your &lt;STRONG data-start="318" data-end="349"&gt;Azure Data Factory pipeline&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H6 data-start="352" data-end="391"&gt;Steps&lt;/H6&gt;
&lt;UL&gt;
&lt;LI&gt;Launch Azure Data Factory&lt;/LI&gt;
&lt;LI&gt;Log in to the &lt;STRONG data-start="408" data-end="424"&gt;Azure Portal&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Navigate to your deployed &lt;STRONG data-start="453" data-end="484"&gt;Azure Data Factory instance&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Click &lt;STRONG data-start="493" data-end="505"&gt;“Author”&lt;/STRONG&gt; from the left-hand menu to open the pipeline editor&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="font-style: var(--lia-blog-font-style); font-family: var(--lia-blog-font-family); font-size: var(--lia-bs-font-size-base);"&gt;In the ADF Author pane, click the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG style="font-style: var(--lia-blog-font-style); font-family: var(--lia-blog-font-family); font-size: var(--lia-bs-font-size-base);" data-start="771" data-end="785"&gt;"+" (plus)&lt;/STRONG&gt;&lt;SPAN style="font-style: var(--lia-blog-font-style); font-family: var(--lia-blog-font-family); font-size: var(--lia-bs-font-size-base);"&gt; icon next to &lt;/SPAN&gt;&lt;STRONG style="font-style: var(--lia-blog-font-style); font-family: var(--lia-blog-font-family); font-size: var(--lia-bs-font-size-base);" data-start="799" data-end="811"&gt;Datasets&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG data-start="822" data-end="839"&gt;“New dataset”&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Choose &lt;STRONG data-start="850" data-end="874"&gt;Google Cloud Storage&lt;/STRONG&gt; as the data source&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG data-start="904" data-end="911"&gt;CSV&lt;/STRONG&gt; as the file format&lt;/LI&gt;
&lt;LI&gt;Set the &lt;STRONG data-start="942" data-end="958"&gt;Dataset Name&lt;/STRONG&gt;, for example:&lt;BR data-start="972" data-end="975" /&gt;gcs_focus_export_dataset&lt;/LI&gt;
&lt;LI&gt;Click &lt;STRONG data-start="1168" data-end="1179"&gt;“+ New”&lt;/STRONG&gt; next to the &lt;STRONG data-start="1192" data-end="1210"&gt;Linked Service&lt;/STRONG&gt; dropdown&lt;/LI&gt;
&lt;LI&gt;Enter a name like:&lt;BR data-start="1241" data-end="1244" /&gt;GCS-Billing-LinkedService&lt;/LI&gt;
&lt;LI&gt;Under &lt;STRONG data-start="1284" data-end="1307"&gt;Authentication Type&lt;/STRONG&gt;, choose:&lt;/LI&gt;
&lt;LI&gt;Access Key &lt;EM data-start="1335" data-end="1370"&gt;(for Interoperability access key)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Or Azure Key Vault &lt;EM data-start="1397" data-end="1442"&gt;(recommended for secure credential storage)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;Fill in the following fields:&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG data-start="1481" data-end="1495"&gt;Access Key&lt;/STRONG&gt;: Your GCS interoperability key&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG data-start="1532" data-end="1542"&gt;Secret&lt;/STRONG&gt;: Your GCS interoperability secret&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG data-start="1582" data-end="1597"&gt;Bucket Name&lt;/STRONG&gt;: focus-cost-export&lt;/LI&gt;
&lt;LI&gt;(Optional) Point to a folder path like: focus-billing-data/&lt;/LI&gt;
&lt;LI&gt;Click &lt;STRONG data-start="1696" data-end="1715"&gt;Test Connection&lt;/STRONG&gt; to validate access&lt;/LI&gt;
&lt;LI&gt;Click &lt;STRONG data-start="1746" data-end="1756"&gt;Create&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="font-family: var(--lia-bs-headings-font-family); font-size: var(--lia-bs-h6-font-size); font-style: var(--lia-headings-font-style); letter-spacing: var(--lia-h6-letter-spacing);"&gt;Adjust Dataset Properties&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="622" data-end="731"&gt;Now that the dataset has been created, make the following modifications to ensure proper parsing of the CSVs:&lt;/P&gt;
&lt;P&gt;&lt;STRONG data-start="735" data-end="746"&gt;Setting&lt;/STRONG&gt;&lt;STRONG data-start="760" data-end="769"&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Column delimiter; (semicolon)&lt;/LI&gt;
&lt;LI&gt;Escape character" (double quote)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="921" data-end="1011"&gt;You can find these under the &lt;STRONG data-start="950" data-end="966"&gt;“Connection”&lt;/STRONG&gt; and &lt;STRONG data-start="971" data-end="983"&gt;“Schema”&lt;/STRONG&gt; tabs of the dataset editor.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;If your connection fails you may need to enable public access on your GCS bucket or check your firewall restrictions from azure to the internet!&lt;/EM&gt;&lt;/P&gt;
&lt;H3 data-start="287" data-end="342"&gt;Create a Google Cloud Storage metadata dataset&lt;/H3&gt;
&lt;P data-start="344" data-end="622"&gt;To support &lt;STRONG data-start="355" data-end="378"&gt;incremental loading&lt;/STRONG&gt;, we need a dedicated dataset to read the export_metadata.json file that your Cloud Function writes to Google Cloud Storage. This dataset will be used by the &lt;STRONG data-start="538" data-end="548"&gt;Lookup&lt;/STRONG&gt; activity in your pipeline to get the latest export timestamp from Google.&lt;/P&gt;
&lt;H6 data-start="675" data-end="689"&gt;Steps:&lt;/H6&gt;
&lt;OL data-start="691" data-end="866"&gt;
&lt;LI data-start="691" data-end="762"&gt;In the &lt;STRONG data-start="701" data-end="711"&gt;Author&lt;/STRONG&gt; pane of ADF, click &lt;STRONG data-start="731" data-end="762"&gt;"+" &amp;gt; Dataset &amp;gt; New dataset&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="691" data-end="762"&gt;Select&amp;nbsp;&lt;STRONG data-start="773" data-end="797"&gt;Google Cloud Storage&lt;/STRONG&gt; as the source&lt;/LI&gt;
&lt;LI data-start="812" data-end="844"&gt;Choose &lt;STRONG data-start="822" data-end="830"&gt;JSON&lt;/STRONG&gt; as the format&lt;/LI&gt;
&lt;LI data-start="845" data-end="866"&gt;Click &lt;STRONG data-start="854" data-end="866"&gt;Continue&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="845" data-end="866"&gt;&lt;SPAN style="font-family: var(--lia-bs-headings-font-family); font-size: var(--lia-bs-h6-font-size); font-style: var(--lia-headings-font-style); letter-spacing: var(--lia-h6-letter-spacing);"&gt;Configure the Dataset&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;STRONG data-start="905" data-end="916"&gt;Setting&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG data-start="927" data-end="936"&gt;Value&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;gcs_export_metadata_dataset&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Linked Service&lt;/td&gt;&lt;td&gt;Use your existing GCS linked service&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;File path&lt;/td&gt;&lt;td&gt;e.g., focus-cost-export/metadata/export_metadata.json&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Import schema&lt;/td&gt;&lt;td&gt;Set to &lt;STRONG data-start="1289" data-end="1314"&gt;From connection/store&lt;/STRONG&gt; or manually define if needed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;File pattern&lt;/td&gt;&lt;td&gt;&lt;STRONG data-start="1368" data-end="1390"&gt;Set to single file&lt;/STRONG&gt; (not folder)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3 data-start="101" data-end="156"&gt;Create the sink dataset – "ingestion_gcp"&lt;/H3&gt;
&lt;P data-start="158" data-end="397"&gt;Now that we’ve connected to Google Cloud Storage and defined the source dataset, it’s time to create the &lt;STRONG data-start="263" data-end="279"&gt;sink dataset&lt;/STRONG&gt;. This will land your &lt;STRONG data-start="301" data-end="347"&gt;transformed billing data in Parquet format&lt;/STRONG&gt; into your Azure FinOps Hub’s ingestion container.&lt;/P&gt;
&lt;H6 data-start="404" data-end="417"&gt;Steps:&lt;/H6&gt;
&lt;OL data-start="419" data-end="710"&gt;
&lt;LI data-start="419" data-end="475"&gt;In Azure Data Factory, go to the &lt;STRONG data-start="455" data-end="465"&gt;Author&lt;/STRONG&gt; section&lt;/LI&gt;
&lt;LI data-start="476" data-end="557"&gt;Under &lt;STRONG data-start="485" data-end="497"&gt;Datasets&lt;/STRONG&gt;, click the &lt;STRONG data-start="509" data-end="523"&gt;"+" (plus)&lt;/STRONG&gt; icon and select &lt;STRONG data-start="540" data-end="557"&gt;“New dataset”&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="558" data-end="647"&gt;Choose &lt;STRONG data-start="568" data-end="600"&gt;Azure Data Lake Storage Gen2&lt;/STRONG&gt; (or Blob Storage, depending on your Hub setup)&lt;/LI&gt;
&lt;LI data-start="648" data-end="688"&gt;Select &lt;STRONG data-start="658" data-end="669"&gt;Parquet&lt;/STRONG&gt; as the file format&lt;/LI&gt;
&lt;LI data-start="689" data-end="710"&gt;Click &lt;STRONG data-start="698" data-end="710"&gt;Continue&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H6 data-start="717" data-end="752"&gt;Configure dataset properties&lt;/H6&gt;
&lt;UL data-start="754" data-end="1150"&gt;
&lt;LI data-start="754" data-end="781"&gt;&lt;STRONG data-start="756" data-end="764"&gt;Name&lt;/STRONG&gt;: ingestion_gcp&lt;/LI&gt;
&lt;LI data-start="782" data-end="1016"&gt;&lt;STRONG data-start="784" data-end="802"&gt;Linked Service&lt;/STRONG&gt;:&lt;BR data-start="803" data-end="806" /&gt;Select your existing linked service that connects to your FinOps Hub’s storage account. &lt;EM&gt;(this will have been created when you deployed the hub)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-start="1017" data-end="1150"&gt;&lt;STRONG data-start="1019" data-end="1032"&gt;File path&lt;/STRONG&gt;:&lt;BR data-start="1033" data-end="1036" /&gt;Point to the container and folder path where you want to store the ingested files (e.g., ingestion-gcp/cost/billing-provider/gcp/focus/)&lt;/LI&gt;
&lt;/UL&gt;
&lt;H6 data-start="1157" data-end="1182"&gt;Optional Settings:&lt;/H6&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;STRONG data-start="1186" data-end="1196"&gt;Option&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;&lt;STRONG data-start="1216" data-end="1237"&gt;Recommended Value&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Compression type&lt;/td&gt;&lt;td&gt;snappy&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-start="1514" data-end="1589"&gt;Once configured, click&amp;nbsp;&lt;STRONG data-start="1537" data-end="1552"&gt;Publish All&lt;/STRONG&gt; again to save your new sink dataset.&lt;/P&gt;
&lt;H3 data-start="101" data-end="156"&gt;Create the sink dataset – "adls_last_import_metadata"&lt;/H3&gt;
&lt;P data-start="158" data-end="397"&gt;The adls_last_import_metadata dataset (sinks dataset) is the location you use to copy the export time json file from google to azure, this location is sued for the pipeline to check the last time the import of data was run by reading the json file you coped from google and comparing it to the new json file from google&lt;/P&gt;
&lt;H6 data-start="404" data-end="417"&gt;Steps:&lt;/H6&gt;
&lt;OL data-start="419" data-end="710"&gt;
&lt;LI data-start="419" data-end="475"&gt;In Azure Data Factory, go to the &lt;STRONG data-start="455" data-end="465"&gt;Author&lt;/STRONG&gt; section&lt;/LI&gt;
&lt;LI data-start="476" data-end="557"&gt;Under &lt;STRONG data-start="485" data-end="497"&gt;Datasets&lt;/STRONG&gt;, click the &lt;STRONG data-start="509" data-end="523"&gt;"+" (plus)&lt;/STRONG&gt; icon and select &lt;STRONG data-start="540" data-end="557"&gt;“New dataset”&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI data-start="558" data-end="647"&gt;Choose &lt;STRONG data-start="568" data-end="600"&gt;Azure Data Lake Storage Gen2&lt;/STRONG&gt; (or Blob Storage, depending on your Hub setup)&lt;/LI&gt;
&lt;LI data-start="648" data-end="688"&gt;Select JSON as the file format&lt;/LI&gt;
&lt;LI data-start="689" data-end="710"&gt;Click &lt;STRONG data-start="698" data-end="710"&gt;Continue&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H6 data-start="717" data-end="752"&gt;Configure dataset properties&lt;/H6&gt;
&lt;UL data-start="754" data-end="1150"&gt;
&lt;LI data-start="754" data-end="781"&gt;&lt;STRONG data-start="756" data-end="764"&gt;Name&lt;/STRONG&gt;: adsl_last_import_metadata&lt;/LI&gt;
&lt;LI data-start="782" data-end="1016"&gt;&lt;STRONG data-start="784" data-end="802"&gt;Linked Service&lt;/STRONG&gt;:&lt;BR data-start="803" data-end="806" /&gt;Select your existing linked service that connects to your FinOps Hub’s storage account. &lt;EM&gt;(this will have been created when you deployed the hub)&lt;/EM&gt;&lt;/LI&gt;
&lt;LI data-start="1017" data-end="1150"&gt;&lt;STRONG data-start="1019" data-end="1032"&gt;File path&lt;/STRONG&gt;:&lt;BR data-start="1033" data-end="1036" /&gt;Point to the container and folder path where you want to store the ingested files (e.g., ingestion/cost/metadata)&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="227" data-end="286"&gt;Build the ADF pipeline for incremental import&lt;/H3&gt;
&lt;P data-start="288" data-end="532"&gt;With your datasets created, the final step is building the &lt;STRONG data-start="347" data-end="365"&gt;pipeline logic&lt;/STRONG&gt; that orchestrates the data flow. The goal is to &lt;STRONG data-start="414" data-end="457"&gt;only import newly exported billing data&lt;/STRONG&gt; from Google, avoiding duplicates by comparing timestamps from both clouds.&lt;/P&gt;
&lt;P data-start="564" data-end="676"&gt;In this pipeline, we’ll:&lt;/P&gt;
&lt;OL data-start="678" data-end="1111"&gt;
&lt;LI data-start="678" data-end="744"&gt;&lt;STRONG data-start="681" data-end="716"&gt;Fetch Google’s export timestamp&lt;/STRONG&gt; from the JSON metadata file&lt;/LI&gt;
&lt;LI data-start="745" data-end="827"&gt;&lt;STRONG data-start="748" data-end="789"&gt;Fetch the last successful import time&lt;/STRONG&gt; from the Hub’s metadata file in Azure&lt;/LI&gt;
&lt;LI data-start="828" data-end="902"&gt;&lt;STRONG data-start="831" data-end="853"&gt;Compare timestamps&lt;/STRONG&gt; to determine whether there is new data to ingest&lt;/LI&gt;
&lt;LI data-start="903" data-end="1111"&gt;If new data exists:
&lt;UL data-start="929" data-end="1111"&gt;
&lt;LI data-start="929" data-end="1038"&gt;&lt;STRONG data-start="931" data-end="956"&gt;Run the Copy Activity&lt;/STRONG&gt; to fetch GCS CSVs, convert to Parquet, and write to the ingestion_gcp container&lt;/LI&gt;
&lt;LI data-start="1042" data-end="1111"&gt;&lt;STRONG data-start="1044" data-end="1078"&gt;Write an updated metadata file&lt;/STRONG&gt; in the hub, with the latest import timestamp&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H5 data-start="1118" data-end="1144"&gt;Pipeline components:&lt;/H5&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; height: 261px; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr style="height: 27px;"&gt;&lt;th style="height: 27px;"&gt;&lt;STRONG data-start="1148" data-end="1160"&gt;Activity&lt;/STRONG&gt;&lt;/th&gt;&lt;th style="height: 27px;"&gt;&lt;STRONG data-start="1172" data-end="1183"&gt;Purpose&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="height: 51px;"&gt;&lt;td style="height: 51px;"&gt;&lt;STRONG data-start="1357" data-end="1382"&gt;Lookup - GCS Metadata&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 51px;"&gt;Reads the last export time from Google's metadata JSON in GCS&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 51px;"&gt;&lt;td style="height: 51px;"&gt;&lt;STRONG data-start="1461" data-end="1486"&gt;Lookup - Hub Metadata&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 51px;"&gt;Reads the last import time from Azure’s metadata JSON in ADLS&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="1566" data-end="1582"&gt;If Condition&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;Compares timestamps to decide whether to continue with copy&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="1670" data-end="1683"&gt;Copy Data&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;Transfers files from GCS (CSV) to ADLS (Parquet)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="1775" data-end="1791"&gt;Set Variable&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;Captures the latest import timestamp&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 51px;"&gt;&lt;td style="height: 51px;"&gt;&lt;STRONG data-start="1879" data-end="1900"&gt;Web/Copy Activity&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 51px;"&gt;Writes updated import timestamp JSON file to ingestion_gcp container&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;H5&gt;What your pipeline will look like:&lt;/H5&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;H6 data-start="1987" data-end="2006"&gt;Step-by-Step&lt;/H6&gt;
&lt;UL&gt;
&lt;LI data-start="611" data-end="643"&gt;Create two lookup activities:
&lt;UL&gt;
&lt;LI data-start="611" data-end="643"&gt;GCS Metadata&lt;/LI&gt;
&lt;LI data-start="611" data-end="643"&gt;Hub Metadata&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Lookup1 – GCS Metadata&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-start="611" data-end="643"&gt;Add an activity called Lookup to your new pipeline&lt;/LI&gt;
&lt;LI data-start="611" data-end="643"&gt;Select the Source Dataset: gcs_export_metadata_dataset or whatever you named it earlier&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This lookup reads the the export_metadata.json file created by your Cloud Function in GCS for the last export time available.&lt;/P&gt;
&lt;P data-start="804" data-end="861"&gt;&lt;EM&gt;&lt;U&gt;&lt;STRONG&gt;Configuration view of lookup for GCS metadata file&lt;/STRONG&gt;&lt;/U&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H6 data-start="868" data-end="902"&gt;&lt;STRONG data-start="876" data-end="902"&gt;Lookup2 – Hub Metadata&lt;/STRONG&gt;&lt;/H6&gt;
&lt;UL data-start="903" data-end="1068"&gt;
&lt;LI data-start="903" data-end="944"&gt;Add an activity called lookup and name it Hub Metadata&lt;/LI&gt;
&lt;LI data-start="903" data-end="944"&gt;Select the source dataset: adls_last_import_metadata&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This lookup reads the last import time data from the hub metadata file to compare it to the last export time from GCS&lt;/P&gt;
&lt;P data-start="1070" data-end="1127"&gt;&lt;EM&gt;&lt;U&gt;&lt;STRONG&gt;Configuration view of Metadata lookup activity&lt;/STRONG&gt;&lt;/U&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H1 data-start="1134" data-end="1171"&gt;Add conditional logic&lt;/H1&gt;
&lt;P data-start="1173" data-end="1240"&gt;In this step we will add the condition logic&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-start="1173" data-end="1240"&gt;Add activity called If Condition&lt;/LI&gt;
&lt;LI data-start="1173" data-end="1240"&gt;Add the expression below to the condition&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="1263" data-end="1341"&gt;Go to the &lt;STRONG data-start="1273" data-end="1287"&gt;Expression&lt;/STRONG&gt; tab and paste the following into &lt;STRONG data-start="1321" data-end="1340"&gt;Dynamic Content&lt;/STRONG&gt;:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;@greater(activity('Lookup1').output.last_export_time, activity('Lookup2').output.last_import_time)&lt;/LI-CODE&gt;
&lt;P&gt;&lt;U&gt;&lt;EM&gt;&lt;STRONG&gt;Configuration view of If Condition Activity&lt;/STRONG&gt;&lt;/EM&gt;&lt;/U&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H6 data-start="1530" data-end="1585"&gt;Next&lt;/H6&gt;
&lt;UL&gt;
&lt;LI data-start="1530" data-end="1585"&gt;Add Copy Activity (If Condition = True)&lt;/LI&gt;
&lt;LI data-start="1530" data-end="1585"&gt;next to True condition select edit and add activity Copy Data&lt;/LI&gt;
&lt;LI data-start="1530" data-end="1585"&gt;Configure the activity with the following details&lt;/LI&gt;
&lt;/UL&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 96.4706%; height: 135px; border-width: 1px;"&gt;&lt;thead&gt;&lt;tr style="height: 27px;"&gt;&lt;th style="height: 27px;"&gt;&lt;STRONG data-start="1706" data-end="1717"&gt;Setting&lt;/STRONG&gt;&lt;/th&gt;&lt;th style="height: 27px;"&gt;&lt;STRONG data-start="1731" data-end="1740"&gt;Value&lt;/STRONG&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="1848" data-end="1866"&gt;Source Dataset&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;gcs_focus_export_dataset (CSV from GCS)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="1919" data-end="1935"&gt;Sink Dataset&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;ingestion_gcp (Parquet to ADLS)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="1990" data-end="2005"&gt;Merge Files&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;Enabled (reduce file count)&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 27px;"&gt;&lt;td style="height: 27px;"&gt;&lt;STRONG data-start="2061" data-end="2082"&gt;Filter Expression&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 27px;"&gt;@activity('Lookup1').output.firstRow.last_export_time&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Ensure you add filter expression for&lt;STRONG&gt; filter by last modified.&amp;nbsp;&lt;/STRONG&gt;This is important, if you do not add the filter by last modified expression your pipeline will not function properly.&lt;/P&gt;
&lt;H3&gt;Finally we create an activity to update the metadata file in the hub&lt;/H3&gt;
&lt;P&gt;Add another copy activity to your if condition and ensure it is linked to the previous copy activity, this ensure it runs after the import activity is completed.&lt;/P&gt;
&lt;H6 data-start="2368" data-end="2398"&gt;Copy metadata activity settings:&lt;/H6&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;&lt;STRONG data-start="2402" data-end="2412"&gt;Source&lt;/STRONG&gt;&lt;/th&gt;&lt;th&gt;gcs_export_metadata_dataset&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG data-start="2544" data-end="2552"&gt;Sink&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;adls_last_import_dataset&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;STRONG data-start="2615" data-end="2635"&gt;Destination Path&lt;/STRONG&gt;&lt;/td&gt;&lt;td&gt;ingestion_gcp/metadata/last_import.json&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P data-start="2685" data-end="2796"&gt;This step ensures the next run of your pipeline uses the updated import time to decide whether new data exists.&lt;/P&gt;
&lt;P data-start="2685" data-end="2796"&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Your pipeline now ingests only new billing data from Google and records each successful import to prevent duplicate processing.&lt;/P&gt;
&lt;H1 data-start="129" data-end="183"&gt;Wrapping up – A unified FinOps reporting solution&lt;/H1&gt;
&lt;P data-start="185" data-end="384"&gt;Congratulations — you’ve just built a fully functional &lt;STRONG data-start="240" data-end="276"&gt;multi-cloud FinOps data pipeline&lt;/STRONG&gt; using Microsoft’s FinOps Hub Toolkit and Google Cloud billing data, normalized with the FOCUS 1.0 standard.&lt;/P&gt;
&lt;P data-start="386" data-end="418"&gt;By following this guide, you’ve:&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="424" data-end="457"&gt;Enabled FOCUS billing exports&lt;/STRONG&gt; in Google Cloud using BigQuery, GCS, and Cloud Functions&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="521" data-end="564"&gt;Created normalized, FOCUS-aligned views&lt;/STRONG&gt; to unify your GCP billing data&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="602" data-end="633"&gt;Automated metadata tracking&lt;/STRONG&gt; to support incremental exports&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="671" data-end="711"&gt;Built an Azure Data Factory pipeline&lt;/STRONG&gt; to fetch, transform, and ingest GCP data into your Hub&lt;/P&gt;
&lt;P&gt;✅ &lt;STRONG data-start="773" data-end="810"&gt;Established a reliable foundation&lt;/STRONG&gt; for &lt;STRONG data-start="815" data-end="858"&gt;centralized, multi-cloud cost reporting&lt;/STRONG&gt;&lt;/P&gt;
&lt;P data-start="860" data-end="1039"&gt;This solution brings &lt;STRONG data-start="881" data-end="942"&gt;side-by-side visibility into Azure and Google Cloud costs&lt;/STRONG&gt;, enabling informed decision-making, workload optimization, and true multi-cloud FinOps maturity.&lt;/P&gt;
&lt;H1 data-start="1046" data-end="1062"&gt;Next steps&lt;/H1&gt;
&lt;UL data-start="1064" data-end="1419"&gt;
&lt;LI data-start="1064" data-end="1136"&gt;🔁 &lt;STRONG data-start="1069" data-end="1098"&gt;Schedule the ADF pipeline&lt;/STRONG&gt; to run daily or hourly using triggers&lt;/LI&gt;
&lt;LI data-start="1137" data-end="1232"&gt;📈 &lt;STRONG data-start="1142" data-end="1171"&gt;Build Power BI dashboards&lt;/STRONG&gt; or use templates from the &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/cloud-computing/finops/toolkit/power-bi/reports" target="_blank" rel="noopener"&gt;Microsoft FinOps Toolkit&lt;/A&gt; visualise unified cloud spend&lt;/LI&gt;
&lt;LI data-start="1233" data-end="1321"&gt;🧠 &lt;STRONG data-start="1238" data-end="1255"&gt;Extend to AWS&lt;/STRONG&gt; by applying the same principles using the AWS FOCUS export and AWS S3 storage&lt;/LI&gt;
&lt;/UL&gt;
&lt;H1 data-start="1426" data-end="1442"&gt;Feedback?&lt;/H1&gt;
&lt;P data-start="1444" data-end="1647"&gt;Have questions or want to see more deep dives like this? Let me know — or &lt;A class="lia-external-url" href="https://www.linkedin.com/in/murphygraham/" target="_blank" rel="noopener"&gt;connect with me &lt;/A&gt;if you’re working on FinOps, FOCUS, or multi-cloud reporting. This blog is just the beginning of what's possible.&lt;/P&gt;</description>
      <pubDate>Fri, 27 Jun 2025 16:43:31 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/getting-started-with-finops-hubs-multicloud-cost-reporting-with/ba-p/4415190</guid>
      <dc:creator>GrahamM</dc:creator>
      <dc:date>2025-06-27T16:43:31Z</dc:date>
    </item>
    <item>
      <title>EA to MCA: Reporting on cost in Power BI</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/ea-to-mca-reporting-on-cost-in-power-bi/ba-p/4416362</link>
      <description>&lt;P&gt;Microsoft offers several ways to analyze and report on your cloud costs. For quick exploration of subscriptions and billing accounts, start with smart views in&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/cost-management-billing/costs/quick-acm-cost-analysis?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;Cost analysis&lt;/A&gt;&amp;nbsp;in the Azure portal or Microsoft 365 admin center. When you need more control or to save and share charts, switch to customizable views. But what should you do when you need to build out more advanced, interactive reports or need to share reports with business and finance stakeholders? This is where Power BI comes in, especially since many organizations are already leveraging Power BI for business and financial reporting outside of cloud costs.&lt;/P&gt;
&lt;H1&gt;Cost Management connector for Power BI&lt;/H1&gt;
&lt;P&gt;The Cost Management app for Power BI has always been a popular option for organizations with an Enterprise Agreement (EA) enrollment. But the app was designed exclusively for EA enrollments and doesn’t support Microsoft Customer Agreement (MCA) accounts. This left many organizations with no other option than to create new reports from scratch using the Cost Management connector for Power BI. But this presents a few challenges:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The connector uses outdated APIs that don’t include all details.&lt;/LI&gt;
&lt;LI&gt;The underlying datasets use different column names than EA data, so the same reports can’t be used.&lt;/LI&gt;
&lt;LI&gt;The connector can only handle up to around $2-5 million in total monitored spend.&lt;/LI&gt;
&lt;LI&gt;The connector doesn’t support connecting to multiple billing accounts, so there’s no way to view historical costs after an EA renewal or MCA migration.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The latest recommendation from the Cost Management team is to export data to a storage account and use the Azure Data Lake Storage Gen2 connector or Microsoft Fabric to pull data into Power BI reports. This approach ensures your reports will have the latest complete data in a more scalable way. But the problem here is that you have to start from scratch with a new, empty report. This is where the FinOps toolkit comes in.&lt;/P&gt;
&lt;H1&gt;Power BI reports for Cost Management exports&lt;/H1&gt;
&lt;P&gt;Based on the direction from the Cost Management team, the FinOps toolkit provides a set of reports that connect to exported data from Cost Management. Simply export your data, download the reports, and point them at your storage account. It’s that simple. And the great news is, these reports:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Use the latest data in the FinOps Open Cost and Usage Specification (FOCUS) format, which includes all available details about your cost and usage.&lt;/LI&gt;
&lt;LI&gt;Use a single set of columns for both EA and MCA billing accounts.&lt;/LI&gt;
&lt;LI&gt;Support connecting to multiple billing accounts and even subscriptions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The FinOps toolkit includes 5 reports:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Cost summary&lt;/STRONG&gt; – Track cost over time and get a general overview of cost and savings with common breakdowns to get you started.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Rate optimization&lt;/STRONG&gt; – Review cost savings from negotiated and commitment discounts and identify opportunities to increase savings.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Policy + governance&lt;/STRONG&gt; – Summarize your governance posture with standard metrics aligned with the Cloud Adoption Framework.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Workload optimization&lt;/STRONG&gt; – Gain insights into resource utilization and efficiency opportunities based on historical usage patterns.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Data ingestion&lt;/STRONG&gt; – Review FinOps hubs cost and monitor Cost Management exports to identify and resolve common issues.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;The Cost summary and Rate optimization reports are based on the EA template app, so if you’re familiar with that, you should feel right at home. A lot has been added, so you’ll also find some welcome additions.&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;&lt;img /&gt;
&lt;H1&gt;Getting started with FinOps toolkit reports&lt;/H1&gt;
&lt;P&gt;FinOps toolkit Power BI reports support a few deployment options, from raw Cost Management exports in Azure Data Lake Storage (ADLS) to data processed and ingested into storage, Azure Data Explorer, or Microsoft Fabric via the FinOps hubs orchestration engine. For today, we’ll focus exclusively on raw Cost Management exports in storage.&lt;/P&gt;
&lt;H3&gt;Step 1. Create an Azure Data Lake Storage Gen2 storage account&lt;/H3&gt;
&lt;P&gt;FinOps toolkit reports use ADLS for improved performance and load times. When creating a new storage account, select &lt;STRONG&gt;Premium&lt;/STRONG&gt; performance and &lt;STRONG&gt;Block Blobs&lt;/STRONG&gt; redundancy, then select &lt;STRONG&gt;Enable hierarchical namespace&lt;/STRONG&gt; on the Advanced tab.&lt;/P&gt;
&lt;img /&gt;&lt;img /&gt;
&lt;P&gt;Make note of the subscription and storage account name. You’ll need those in the next step.&lt;/P&gt;
&lt;P&gt;To learn more, see &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/storage/blobs/create-data-lake-storage-account?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;Create a storage account for Azure Data Lake Storage&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Step 2. Create Cost Management exports&lt;/H3&gt;
&lt;P&gt;Next, let’s create exports.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Open Cost Management in the Azure portal.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;Reporting + analytics &amp;gt; Exports&lt;/STRONG&gt;, and then select &lt;STRONG&gt;+ Create&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;In the export wizard, select the &lt;STRONG&gt;All costs (FOCUS) + prices&lt;/STRONG&gt; template.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;Next&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Specify the subscription and storage account from step 1.&lt;/LI&gt;
&lt;LI&gt;Specify the desired container and directory path.&lt;/LI&gt;
&lt;LI&gt;Specify &lt;STRONG&gt;Parquet&lt;/STRONG&gt; format with &lt;STRONG&gt;Snappy&lt;/STRONG&gt; compression and overwrite data to avoid data duplication with raw exports.
&lt;UL&gt;
&lt;LI&gt;CSV with or without Gzip compression will also work but may impact data refresh performance.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Select&amp;nbsp;&lt;STRONG&gt;Next&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Confirm the configured settings and select&amp;nbsp;&lt;STRONG&gt;Create&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;With cost and price exports created, now create reservation recommendation exports. One important note about reservation recommendation exports is that each export can only cover one reservation scope, one service, and one lookback period. If you want to collect shared and scoped recommendations, or recommendations from multiple services, or recommendations for different lookback periods, you will need to create multiple exports. You can create up to 10 exports in the new export wizard. To create more, run thru the wizard for the remaining datasets. I recommend creating shared and single scoped recommendations for each service you use.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Select &lt;STRONG&gt;+ Create&lt;/STRONG&gt; at the top of the page.&lt;/LI&gt;
&lt;LI&gt;Select the &lt;STRONG&gt;Create your own export&lt;/STRONG&gt; template.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;+ Add export&lt;/STRONG&gt;,&lt;/LI&gt;
&lt;LI&gt;Select the &lt;STRONG&gt;Reservation recommendations&lt;/STRONG&gt; type, specify each of the available options, and select &lt;STRONG&gt;Add&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Repeat 3 and 4 for each desired reservation recommendation dataset.&lt;/LI&gt;
&lt;LI&gt;Select &lt;STRONG&gt;Next&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Specify the same destination settings from the cost and price exports above, then select &lt;STRONG&gt;Next&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Confirm the configured settings and select &lt;STRONG&gt;Create&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Repeat 1-8 for any additional datasets.&lt;/P&gt;
&lt;P&gt;Normally, exports will run within 24 hours. Select the checkboxes for each of the new exports, then select the &lt;STRONG&gt;Run now&lt;/STRONG&gt; command at the top of the page.&lt;/P&gt;
&lt;P&gt;After you configure exports for your current scope, use the scope picker at the top of the page to select any additional scopes you’re interested in. If you recently transitioned from EA to MCA or even had an EA renewal in the last 7 years, you can create cost and price exports on those older billing accounts. And of course, if you’re managing multiple subscriptions, you can do the same for each subscription. Note that price and reservation exports are only available for EA billing accounts and MCA billing profiles.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;To learn more, see &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/cost-management-billing/costs/tutorial-improved-exports?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;Create and manage Cost Management exports&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Step 3. Connect Power BI reports to storage&lt;/H3&gt;
&lt;P&gt;The FinOps toolkit includes a set of demo reports with sample data and report templates that you can open in Power BI Desktop. If you don’t already have Power BI Desktop, you can learn more and download it from the &lt;A class="lia-external-url" href="https://www.microsoft.com/power-platform/products/power-bi/desktop?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;Power BI Desktop page&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Before we setup each report, let’s get the storage account URL. The URL consists of 3 parts:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;{dfs-endpoint}/{container}/{optional-folder-path}&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;To get the DFS endpoint, open the desired storage account in the Azure portal, select &lt;STRONG&gt;Settings&lt;/STRONG&gt; &amp;gt; &lt;STRONG&gt;Endpoints&lt;/STRONG&gt; in the menu, and copy the &lt;STRONG&gt;Data Lake Storage&lt;/STRONG&gt; URL.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Replace “{container}” with the container name specified in the exports and, if you used a common storage path across all exports and scopes, replace the “{optional-folder-path}” with the common part of the storage path. Don’t include scope-specific folders if you intend to report on multiple scopes. If you need to change any export container or storage path values, re-run the export to ensure it lands in the correct place.&lt;/P&gt;
&lt;P&gt;Next, download the latest &lt;A class="lia-external-url" href="https://github.com/microsoft/finops-toolkit/releases/latest/download/PowerBI-demo.zip" target="_blank" rel="noopener"&gt;demo reports (PBIX files)&lt;/A&gt; or &lt;A class="lia-external-url" href="https://github.com/microsoft/finops-toolkit/releases/latest/download/PowerBI-storage.zip" target="_blank" rel="noopener"&gt;report templates (PBIT files)&lt;/A&gt;, extract the ZIP, and open the desired files in Power BI Desktop. I recommend starting with Cost summary and Rate optimization. (If you opted to download demo reports, you can also upload these directly to any Microsoft Fabric or Power BI workspace.)&lt;/P&gt;
&lt;P&gt;If you downloaded the demo reports, you can explore the pages with demo data freely without connecting to a storage account. (Although, these reports have limited data.) When you’re ready to connect to your data, select &lt;STRONG&gt;Transform data&lt;/STRONG&gt; &amp;gt; &lt;STRONG&gt;Edit parameters&lt;/STRONG&gt;.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;If you downloaded the templates, you’ll see a dialog pop up requesting the needed parameters.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Set&amp;nbsp;&lt;STRONG&gt;Storage URL&lt;/STRONG&gt; to the Data Lake Storage (DFS) URL we captured earlier and &lt;STRONG&gt;Number of Months&lt;/STRONG&gt; to the number of closed months you’d like to see in the report. You can leave the rest of the values with their default values.&lt;/P&gt;
&lt;P&gt;If you exported prices and want to see missing prices be populated for reservation usage, select the &lt;STRONG&gt;Experimental: Add Missing Prices&lt;/STRONG&gt; parameter. Please note this option joins the cost and price data and may severely impact data refresh performance. If you experience performance issues, please switch to using &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt; with Data Explorer or Microsoft Fabric.&lt;/P&gt;
&lt;P&gt;The &lt;STRONG&gt;Default Granularity&lt;/STRONG&gt; option specifies whether you would like most reports to be summarized at a usage or monthly level.&lt;/P&gt;
&lt;P&gt;If using a template, select &lt;STRONG&gt;Load&lt;/STRONG&gt; and your report should start to ingest data from the storage account. If using a demo report, select &lt;STRONG&gt;OK&lt;/STRONG&gt; and then select the &lt;STRONG&gt;Apply&lt;/STRONG&gt; button in the banner. Data load times can take anywhere from minutes to hours, depending on how much data you have. You can publish the report to the Power BI service using the &lt;STRONG&gt;Home&lt;/STRONG&gt; &amp;gt; &lt;STRONG&gt;Publish&lt;/STRONG&gt; command in Power BI Desktop (or by saving the report and manually uploading the PBIX file). Once uploaded, open the Power BI workspace in a web browser, locate the semantic model for the report, and select the &lt;STRONG&gt;Schedule refresh&lt;/STRONG&gt; icon to configure the report to automatically update every month.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Repeat this process for each report using the same parameter values.&lt;/P&gt;
&lt;P&gt;Note that Power BI has certain limits and guardrails that may constrain the amount of data you can ingest from storage. The amount of data will also impact data refresh performance. Depending on your license and services you use, Power BI reports can load around $1-5 million worth of spend per month with &lt;A href="https://learn.microsoft.com/power-bi/connect-data/incremental-refresh-overview" target="_blank" rel="noopener"&gt;incremental refresh&lt;/A&gt; configured; however, loading this much data can take hours to ingest.&lt;/P&gt;
&lt;P&gt;If you experience errors or delays in the data refresh, we recommend using &lt;A href="https://aka.ms/finops/hubs" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt; with Data Explorer or Microsoft Fabric. FinOps hubs offer massively improved performance and powerful new capabilities for organizations who need to monitor over $100K in total cost.&lt;/P&gt;
&lt;H3&gt;Step 4. Populate historical data&lt;/H3&gt;
&lt;P&gt;Once you have reports up and running, you should think about how much historical data you want to report on. Many organizations start with 13 months, but some are interested in longer, year-over-year reporting. Just remember the constraints of loading no more than $1-5 million in spend per month with scheduled refresh configured. If you do not set up incremental refresh, you will only be able to load a total of $1-5 million in spend.&lt;/P&gt;
&lt;P&gt;You can populate historical data in the portal or via PowerShell. If you have multiple scopes or want to populate data from more than a few months, PowerShell can save time.&lt;/P&gt;
&lt;P&gt;To run exports from the portal, open each export in Cost Management and select the &lt;STRONG&gt;Export selected dates&lt;/STRONG&gt; command at the top of the flyout. Specify the start and end date for one month and select &lt;STRONG&gt;Execute&lt;/STRONG&gt;. Repeat this for each month and each export for each scope.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;To run exports from PowerShell, you can use either PowerShell 7 or Azure Cloud Shell. Refer to&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/powershell/powershell-commands?WT.mc_id=finops-250522-micflan#install-the-module" target="_blank" rel="noopener"&gt;Install the FinOpsToolkit PowerShell module&lt;/A&gt; for initial setup instructions.&lt;/P&gt;
&lt;P&gt;Once the FinOpsToolkit module is installed, run the following command for each exports and each scope. You can copy the billing account and billing profile IDs from the Properties page for each scope in the Azure portal. (This is under Settings &amp;gt; Configuration in Cost Management.)&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;Start-FinOpsCostExport `
    -Scope '/providers/Microsoft.Billing/billingAccounts/###/billingProfiles/###' `
    -Name '{export-name}' `
    -Backfill 13 # or desired number of months&lt;/LI-CODE&gt;
&lt;P&gt;This command will kick off one export for each month in the specified date range (number of -Backfill months) and will pause for API throttling. Once complete, you can run the command again for the next export or next scope.&lt;/P&gt;
&lt;P&gt;Each export can take 15 minutes or more, depending on the size of the account. Once all exports have completed, your reports should automatically update after your next scheduled refresh. You can also manually refresh the report in Power BI Desktop or the semantic model in your Power BI workspace.&lt;/P&gt;
&lt;P&gt;To learn more about this command, see&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/cloud-computing/finops/toolkit/powershell/cost/start-finopscostexport?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;Start-FinOpsCostExport&lt;/A&gt;.&lt;/P&gt;
&lt;H1&gt;Summary and next steps&lt;/H1&gt;
&lt;P&gt;By now, you should have reports setup and populated with at least one month of data and additional months being actively populated. These reports are intended to help you get started on your FinOps journey, so please do think about how you can improve and augment them to meet your needs. Power BI is a powerful platform that allows you to bring in your own data and visualize that in various ways. The FinOps toolkit reports are just the beginning!&lt;/P&gt;
&lt;P&gt;If you have any questions, post them in the &lt;A class="lia-external-url" href="https://aka.ms/ftk/discuss?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;FinOps toolkit discussion forum&lt;/A&gt;. If you have specific feedback about ways to improve the reports, PowerShell, or even a new idea, &lt;A class="lia-external-url" href="https://aka.ms/ftk/ideas?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;create a new feature request&lt;/A&gt;. The FinOps toolkit community is here to help!&lt;/P&gt;
&lt;P&gt;Next, I’ll dig into &lt;A class="lia-external-url" href="https://aka.ms/finops/hubs?WT.mc_id=finops-250522-micflan" target="_blank" rel="noopener"&gt;FinOps hubs&lt;/A&gt;, which offer improved performance and additional capabilities for organizations looking to do more with their data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 06 Jul 2025 20:21:11 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/ea-to-mca-reporting-on-cost-in-power-bi/ba-p/4416362</guid>
      <dc:creator>micflan</dc:creator>
      <dc:date>2025-07-06T20:21:11Z</dc:date>
    </item>
    <item>
      <title>Managing Azure OpenAI costs with the FinOps toolkit and FOCUS: Turning tokens into unit economics</title>
      <link>https://techcommunity.microsoft.com/t5/finops-blog/managing-azure-openai-costs-with-the-finops-toolkit-and-focus/ba-p/4413886</link>
      <description>&lt;P&gt;&lt;EM&gt;By Robb Dilallo&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H2&gt;Introduction&lt;/H2&gt;
&lt;P&gt;As organizations rapidly adopt generative AI, Azure OpenAI usage is growing—and so are the complexities of managing its costs. Unlike traditional cloud services billed per compute hour or storage GB, Azure OpenAI charges based on &lt;STRONG&gt;token usage&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;For FinOps practitioners, this introduces a new frontier: understanding &lt;EM&gt;AI unit economics&lt;/EM&gt; and managing costs where the consumed unit is a token.&lt;/P&gt;
&lt;P&gt;This article explains how to leverage the &lt;STRONG&gt;Microsoft FinOps toolkit&lt;/STRONG&gt; and the &lt;STRONG&gt;FinOps Open Cost and Usage Specification (FOCUS)&lt;/STRONG&gt; to gain visibility, allocate costs, and calculate unit economics for Azure OpenAI workloads.&lt;/P&gt;
&lt;H2&gt;Why Azure OpenAI cost management is different&lt;/H2&gt;
&lt;P&gt;AI services break many traditional cost management assumptions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Billed by token usage&lt;/STRONG&gt; (input + output tokens).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Model choices matter&lt;/STRONG&gt; (e.g., GPT-3.5 vs. GPT-4 Turbo vs. GPT-4o).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Prompt engineering impacts cost&lt;/STRONG&gt; (longer context = more tokens).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Bursty usage patterns&lt;/STRONG&gt; complicate forecasting.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Without proper visibility and unit cost tracking, it's difficult to optimize spend or align costs to business value.&lt;/P&gt;
&lt;H2&gt;Step 1: Get visibility with the FinOps toolkit&lt;/H2&gt;
&lt;P&gt;The &lt;STRONG&gt;Microsoft FinOps toolkit&lt;/STRONG&gt; provides pre-built modules and patterns for analyzing Azure cost data.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;STRONG&gt;Key tools include:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Microsoft Cost Management exports&lt;/STRONG&gt;&lt;BR /&gt;Export daily usage and cost data in a FOCUS-aligned format.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;FinOps hubs&lt;/STRONG&gt;&lt;BR /&gt;Infrastructure-as-Code solution to ingest, transform, and serve cost data.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Power BI templates&lt;/STRONG&gt;&lt;BR /&gt;Pre-built reports conformed to FOCUS for easy analysis.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Pro tip:&lt;/STRONG&gt;&lt;BR /&gt;Start by connecting your Microsoft Cost Management exports to a FinOps hub. Then, use the toolkit’s Power BI FOCUS templates to begin reporting.&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/microsoft/finops-toolkit?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Learn more about the FinOps toolkit&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Step 2: Normalize data with FOCUS&lt;/H2&gt;
&lt;P&gt;The &lt;STRONG&gt;FinOps Open Cost and Usage Specification (FOCUS)&lt;/STRONG&gt; standardizes billing data across providers—including Azure OpenAI.&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;FOCUS Column&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Purpose&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Cost Management Field&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ServiceName&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cloud service (e.g., Azure OpenAI Service)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ServiceName&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ConsumedQuantity&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Number of tokens consumed&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Quantity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;PricingUnit&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Unit type, should align to "tokens"&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;DistinctUnits&amp;nbsp;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;BilledCost&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Actual cost billed&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;CostInBillingCurrency&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ChargeCategory&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identifies consumption vs. reservation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ChargeType&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;ResourceId&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Links to specific deployments or apps&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;ResourceId&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Tags&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Maps usage to teams, projects, or environments&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Tags&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UsageType / Usage Details&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Further SKU-level detail&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Sku Meter Subcategory, Sku Meter Name&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;Why it matters:&lt;/STRONG&gt;&lt;BR /&gt;Azure’s native billing schema can vary across services and time. FOCUS ensures consistency and enables cross-cloud comparisons.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Tip:&lt;/EM&gt; If you use custom deployment IDs or user metadata, apply them as &lt;STRONG&gt;tags&lt;/STRONG&gt; to improve allocation and unit economics.&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://focus.finops.org?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Review the FOCUS specification&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Step 3: Calculate unit economics&lt;/H2&gt;
&lt;P&gt;Unit cost per token = BilledCost ÷ ConsumedQuantity&lt;/P&gt;
&lt;H3&gt;Real-world example: Calculating unit cost in Power BI&lt;/H3&gt;
&lt;P&gt;A recent Power BI report breaks down Azure OpenAI usage by:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;SKU Meter Category&lt;/STRONG&gt; → e.g., &lt;EM&gt;Azure OpenAI&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;SKU Meter Subcategory&lt;/STRONG&gt; → e.g., &lt;EM&gt;gpt 4o 0513 Input global Tokens&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;SKU Meter Name&lt;/STRONG&gt; → detailed SKU info (input/output, model version, etc.)&lt;/LI&gt;
&lt;/UL&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;GPT Model&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Usage Type&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Effective Cost&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;gpt 4o 0513 Input global Tokens&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Input&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;$292.77&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;gpt 4o 0513 Output global Tokens&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Output&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;$23.40&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Unit Cost Formula:&lt;BR /&gt;Unit Cost = EffectiveCost ÷ ConsumedQuantity&lt;/P&gt;
&lt;P&gt;Power BI Measure Example:&lt;BR /&gt;Unit Cost = SUM(EffectiveCost) / SUM(ConsumedQuantity)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pro tip:&lt;/STRONG&gt;&lt;BR /&gt;Break out input and output token costs by model version to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Track which workloads are driving spend.&lt;/LI&gt;
&lt;LI&gt;Benchmark cost per token across GPT models.&lt;/LI&gt;
&lt;LI&gt;Attribute costs back to teams or product features using Tags or ResourceId.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Power BI tip: Building a GPT cost breakdown matrix&lt;/H3&gt;
&lt;P&gt;To easily calculate token unit costs by GPT model and usage type, build a &lt;STRONG&gt;Matrix visual&lt;/STRONG&gt; in Power BI using this hierarchy:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Rows:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;SKU Meter Category&lt;/LI&gt;
&lt;LI&gt;SKU Meter Subcategory&lt;/LI&gt;
&lt;LI&gt;SKU Meter Name&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Values:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;EffectiveCost (sum)&lt;/LI&gt;
&lt;LI&gt;ConsumedQuantity (sum)&lt;/LI&gt;
&lt;LI&gt;Unit Cost (calculated measure)&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;Unit Cost = SUM(‘Costs’[EffectiveCost]) / SUM(‘Costs’[ConsumedQuantity])&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hierarchy Example:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure OpenAI&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ├── GPT 4o Input global Tokens&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ├── GPT 4o Output global Tokens&lt;/P&gt;
&lt;P&gt;&amp;nbsp; ├── GPT 4.5 Input global Tokens&lt;/P&gt;
&lt;P&gt;&amp;nbsp; └── etc.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img&gt;
&lt;P&gt;&lt;EM&gt;Power BI Matrix visual showing Azure OpenAI token usage and costs by SKU Meter Category, Subcategory, and Name. This breakdown enables calculation of unit cost per token across GPT models and usage types, supporting FinOps allocation and unit economics analysis.&lt;/EM&gt;&lt;/P&gt;
&lt;/img&gt;
&lt;H3&gt;What you can see at the token level&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Metric&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Data Source&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Token Volume&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Total tokens consumed&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Consumed Quantity&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Effective Cost&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Actual billed cost&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;BilledCost / Cost&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Unit Cost per Token&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Cost divided by token quantity&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Effective Unit Price&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;SKU Category &amp;amp; Subcategory&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Model, version, and token type (input/output)&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Sku Meter Category, Subcategory, Meter Name&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Resource Group / Business Unit&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Logical or organizational grouping&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Resource Group, Business Unit&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Application&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Application or workload responsible for usage&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Application (tag)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;This visibility allows teams to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Benchmark cost efficiency across GPT models.&lt;/LI&gt;
&lt;LI&gt;Track token costs over time.&lt;/LI&gt;
&lt;LI&gt;Allocate AI costs to business units or features.&lt;/LI&gt;
&lt;LI&gt;Detect usage anomalies and optimize workload design.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;Tip:&lt;/EM&gt; Apply consistent tagging (Cost Center, Application, Environment) to Azure OpenAI resources to enhance allocation and unit economics reporting.&lt;/P&gt;
&lt;H3&gt;How the FinOps Foundation’s AI working group informs this approach&lt;/H3&gt;
&lt;P&gt;The &lt;STRONG&gt;FinOps for AI overview&lt;/STRONG&gt;, developed by the &lt;A class="lia-external-url" href="https://www.finops.org/wg/finops-for-ai-overview?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;FinOps Foundation’s AI working group&lt;/A&gt;, highlights unique challenges in managing AI-related cloud costs, including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Complex cost drivers (tokens, models, compute hours, data transfer).&lt;/LI&gt;
&lt;LI&gt;Cross-functional collaboration between Finance, Engineering, and ML Ops teams.&lt;/LI&gt;
&lt;LI&gt;The importance of tracking &lt;STRONG&gt;AI unit economics&lt;/STRONG&gt; to connect spend with value.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;By combining the &lt;STRONG&gt;FinOps toolkit&lt;/STRONG&gt;, &lt;STRONG&gt;FOCUS-conformed data&lt;/STRONG&gt;, and &lt;STRONG&gt;Power BI reporting&lt;/STRONG&gt;, practitioners can implement many of the AI Working Group’s recommendations:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Establish &lt;STRONG&gt;token-level unit cost metrics&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Allocate costs to &lt;STRONG&gt;teams, models, and AI features&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;Detect cost anomalies specific to AI usage patterns.&lt;/LI&gt;
&lt;LI&gt;Improve forecasting accuracy despite AI workload variability.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;Tip:&lt;/EM&gt; Applying consistent tagging to AI workloads (model version, environment, business unit, and experiment ID) significantly improves cost allocation and reporting maturity.&lt;/P&gt;
&lt;H2&gt;Step 4: Allocate and Report Costs&lt;/H2&gt;
&lt;P&gt;With FOCUS + FinOps toolkit:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Allocate&lt;/STRONG&gt; costs to teams, projects, or business units using Tags, ResourceId, or custom dimensions.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Showback/Chargeback&lt;/STRONG&gt; AI usage costs to stakeholders.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Detect anomalies&lt;/STRONG&gt; using the Toolkit’s patterns or integrate with Azure Monitor.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Tagging tip:&lt;/STRONG&gt;&lt;BR /&gt;Add metadata to Azure OpenAI deployments for easier allocation and unit cost reporting. Example:&lt;/P&gt;
&lt;P&gt;tags:&lt;/P&gt;
&lt;P&gt;&amp;nbsp; CostCenter: AI-Research&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Environment: Production&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Feature: Chatbot&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Step 5: Iterate Using FinOps Best Practices&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;FinOps capability&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Relevance&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Reporting &amp;amp; analytics&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Visualize token costs and trends&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Allocation&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Assign costs to teams or workloads&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Unit economics&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Track cost per token or business output&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Forecasting&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Predict future AI costs&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Anomaly management&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Identify unexpected usage spikes&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Start small (&lt;STRONG&gt;Crawl&lt;/STRONG&gt;), expand as you mature (&lt;STRONG&gt;Walk → Run&lt;/STRONG&gt;).&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://www.finops.org/framework?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Learn about the FinOps Framework&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;Next steps&lt;/H2&gt;
&lt;P&gt;Ready to take control of your Azure OpenAI costs?&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Deploy the Microsoft FinOps toolkit&lt;/STRONG&gt;&lt;BR /&gt;Start ingesting and analyzing your Azure billing data.&lt;BR /&gt;&lt;A class="lia-external-url" href="https://aka.ms/finops/toolkit?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Get started&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Adopt FOCUS&lt;/STRONG&gt;&lt;BR /&gt;Normalize your cost data for clarity and cross-cloud consistency.&lt;BR /&gt;&lt;A class="lia-external-url" href="https://aka.ms/finops/focus?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Explore FOCUS&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Calculate AI unit economics&lt;/STRONG&gt;&lt;BR /&gt;Track token consumption and unit costs using Power BI.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Customize Power BI reports&lt;/STRONG&gt;&lt;BR /&gt;Extend toolkit templates to include token-based unit economics.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Join the conversation&lt;/STRONG&gt;&lt;BR /&gt;Share insights or questions with the &lt;A class="lia-external-url" href="https://aka.ms/finops/discuss?WT.mc_id=finops-250521-robbdi" target="_blank"&gt;FinOps community on TechCommunity&lt;/A&gt; or in the FinOps Foundation Slack.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Advance Your Skills&lt;/STRONG&gt;&lt;BR /&gt;Consider the &lt;A class="lia-external-url" href="https://learn.finops.org/page/focus?WT.mc_id=finops-250521-robbdi" target="_blank"&gt;FinOps Certified FOCUS Analyst certification&lt;/A&gt;.&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;Further Reading&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/finopsblog/understanding-ai-workload-cost-considerations/4400844?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener" data-lia-auto-title="Managing the cost of AI: Understanding AI workload cost considerations" data-lia-auto-title-active="0"&gt;Managing the cost of AI: Understanding AI workload cost considerations&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/finops/toolkit?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Microsoft FinOps toolkit&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://aka.ms/finops/focus?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Learn about FOCUS&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/cost-management-billing/?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;Microsoft Cost Management + Billing&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://www.finops.org?WT.mc_id=finops-250521-robbdi" target="_blank" rel="noopener"&gt;FinOps Foundation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Appendix: FOCUS column glossary&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;ConsumedQuantity&lt;/STRONG&gt;: The number of tokens or units consumed for a given SKU. This is the key measure of usage.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ConsumedUnit&lt;/STRONG&gt;: The type of unit being consumed, such as 'tokens', 'GB', or 'vCPU hours'. Often appears as 'Units' in Azure exports for OpenAI workloads.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PricingUnit&lt;/STRONG&gt;: The unit of measure used for pricing. Should match 'ConsumedUnit', e.g., 'tokens'.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;EffectiveCost&lt;/STRONG&gt;: Final cost after amortization of reservations, discounts, and prepaid credits. Often derived from billing data.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;BilledCost&lt;/STRONG&gt;: The invoiced charge before applying commitment discounts or amortization.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PricingQuantity&lt;/STRONG&gt;: The volume of usage after applying pricing rules such as tiered or block pricing. Used to calculate cost when multiplied by unit price.&lt;/P&gt;</description>
      <pubDate>Wed, 21 May 2025 10:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/finops-blog/managing-azure-openai-costs-with-the-finops-toolkit-and-focus/ba-p/4413886</guid>
      <dc:creator>robbdi</dc:creator>
      <dc:date>2025-05-21T10:00:00Z</dc:date>
    </item>
  </channel>
</rss>

