<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>CAF on Niels Ophey</title><link>https://www.ophey.net/en/tags/caf/</link><description>Recent content in CAF on Niels Ophey</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 16 Jul 2025 13:04:51 +0200</lastBuildDate><atom:link href="https://www.ophey.net/en/tags/caf/index.xml" rel="self" type="application/rss+xml"/><item><title>New Platform Management Group and Subscription for Security in Azure Landing Zones</title><link>https://www.ophey.net/en/blog/azure-landing-zone-update/</link><pubDate>Wed, 16 Jul 2025 13:04:51 +0200</pubDate><guid>https://www.ophey.net/en/blog/azure-landing-zone-update/</guid><description>&lt;p>Microsoft has recently made an important change to the Azure Landing Zones (ALZ) architecture: the introduction of a dedicated &lt;strong>Security Management Group&lt;/strong> and a &lt;strong>Security Subscription&lt;/strong> within the platform structure. &lt;a href="https://techcommunity.microsoft.com/blog/azuregovernanceandmanagementblog/a-new-platform-management-group--subscription-for-security-in-azure-landing-zone/4433287">Here is the official blog post on TechCommunity.&lt;/a>&lt;/p></description></item><item><title>From Silos to Products: How Cloud Organizations Need to Rethink</title><link>https://www.ophey.net/en/blog/caf-organize/</link><pubDate>Thu, 03 Jul 2025 15:04:51 +0200</pubDate><guid>https://www.ophey.net/en/blog/caf-organize/</guid><description>&lt;p>Adopting cloud technologies is more than a technical upgrade – it is an organizational paradigm shift. To successfully leverage the cloud, organizations must not only modernize infrastructure but also realign their own organization. This post explores why the shift from project-oriented to product-oriented structures is crucial – and how Microsoft&amp;rsquo;s Cloud Adoption Framework (CAF) supports this journey.&lt;/p></description></item><item><title>Update Cloud Adoption Framework Manage</title><link>https://www.ophey.net/en/blog/update-caf-manage/</link><pubDate>Thu, 17 Apr 2025 12:30:58 +0200</pubDate><guid>https://www.ophey.net/en/blog/update-caf-manage/</guid><description>&lt;h1 id="preparing-your-azure-cloud-operations-key-updates-and-best-practices">Preparing Your Azure Cloud Operations: Key Updates and Best Practices&lt;/h1>
&lt;p>In the ever-evolving world of cloud computing, staying updated with the latest best practices and guidelines is crucial for effective management and optimization of your cloud environment. The article &amp;ldquo;Ready your Azure cloud operations&amp;rdquo; on Microsoft Learn provides comprehensive insights and strategies to help you prepare and manage your Azure cloud operations efficiently. Here, we summarize the key updates and best practices highlighted in the article.&lt;/p></description></item><item><title>Extended Security Updates Windows Server 2012</title><link>https://www.ophey.net/en/blog/extended-security-update-w2012/</link><pubDate>Fri, 13 Oct 2023 12:00:37 +0200</pubDate><guid>https://www.ophey.net/en/blog/extended-security-update-w2012/</guid><description>&lt;p>The blog post &lt;a href="https://cloudblogs.microsoft.com/windowsserver/2023/10/10/secure-windows-server-2012-r2-workloads-with-options-from-azure/">&amp;ldquo;Secure Windows Server 2012/R2 workloads with options from Azure&amp;rdquo;&lt;/a> shows the most important ways to continue to provide security updates to a workload based on Windows Server 2012 even though the end of support has already been reached.&lt;/p>
&lt;p>At its core, there are the following main options related to Microsoft Azure if you are not able to modernize your workload and migrate to a new server version in the short term.&lt;/p></description></item><item><title>Cost Management - Azure RI vs. Savings Plans</title><link>https://www.ophey.net/en/blog/caf-govern-cost/</link><pubDate>Thu, 05 Oct 2023 12:00:37 +0200</pubDate><guid>https://www.ophey.net/en/blog/caf-govern-cost/</guid><description>&lt;p>The discussion comes up time and again: are Azure Reserved Instances (RI) or Azure Savings Plans (SP) the better option for running an IaaS-based application in Azure? There is no single answer to this question. In the following, we compare both options and evaluate them using different scenarios.&lt;/p></description></item><item><title>Bicep Module for an Anomaly Alert</title><link>https://www.ophey.net/en/blog/caf-bicep-anomalyalert/</link><pubDate>Fri, 05 May 2023 17:00:37 +0200</pubDate><guid>https://www.ophey.net/en/blog/caf-bicep-anomalyalert/</guid><description>&lt;p>In our &lt;a href="https://github.com/caf-expert/CAF-LandingZone-StarterKit">CAF Landing Zone Starter Kit&lt;/a>, the implementation of the Anomaly Alert on the subscription was missing until now. This is almost complete. Here is a possible implementation of the Anomaly Alert as a Bicep module.&lt;/p>
&lt;h2 id="anomaly-alert-bicep">Anomaly Alert Bicep&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bicep" data-lang="bicep">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">targetScope&lt;/span> = &lt;span style="color:#e6db74">&amp;#39;subscription&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Name of the Anomaly Alert&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaName string = &lt;span style="color:#e6db74">&amp;#39;myAnomalyAlert&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Display Name of the Anomaly Alert&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaDisplayName string = &lt;span style="color:#e6db74">&amp;#39;Anomaly Alert&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Subject of the Anomaly Alert email notification&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaNotificationSubject string = &lt;span style="color:#e6db74">&amp;#39;Anomaly Alert detected for your Subscription&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Email address to send the Anomaly Alert notification to&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaNotificationTo string
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Message of the Anomaly Alert email notification&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaNotificationMessage string = &lt;span style="color:#e6db74">&amp;#39;The Anomaly Alert has been triggered for your Subscription &lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">subscription&lt;/span>().subscriptionId&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">. Please check the Cost Management Dashboard for more details.&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Start date of the Anomaly Alert (default: now)&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaStartDate string = &lt;span style="color:#a6e22e">utcNow&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;u&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>@&lt;span style="color:#a6e22e">description&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;End date of the Anomaly Alert (default: 1 year from now)&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">param&lt;/span> aaEndDate string = &lt;span style="color:#a6e22e">dateTimeAdd&lt;/span>(&lt;span style="color:#a6e22e">utcNow&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;u&amp;#39;&lt;/span>), &lt;span style="color:#e6db74">&amp;#39;P1Y&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">// The kind of the Anomaly Alert must be &amp;#39;InsightAlert&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">var&lt;/span> aaKind = &lt;span style="color:#e6db74">&amp;#39;InsightAlert&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">resource&lt;/span> myAnomalyAlert &lt;span style="color:#e6db74">&amp;#39;Microsoft.CostManagement/scheduledActions@2022-10-01&amp;#39;&lt;/span> = {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name: aaName
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> kind: aaKind
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> properties: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> displayName: aaDisplayName
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> scope: &lt;span style="color:#e6db74">&amp;#39;/subscriptions/&lt;/span>&lt;span style="color:#e6db74">${&lt;/span>&lt;span style="color:#a6e22e">subscription&lt;/span>().subscriptionId&lt;span style="color:#e6db74">}&lt;/span>&lt;span style="color:#e6db74">&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> notification: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> subject: aaNotificationSubject
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> to: [
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> aaNotificationTo
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> message: aaNotificationMessage
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> status: &lt;span style="color:#e6db74">&amp;#39;Enabled&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> viewId: &lt;span style="color:#a6e22e">resourceId&lt;/span>(&lt;span style="color:#e6db74">&amp;#39;Microsoft.CostManagement/views/&amp;#39;&lt;/span>,&lt;span style="color:#e6db74">&amp;#39;ms:DailyAnomalyByResourceGroup&amp;#39;&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> schedule: {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> endDate: aaEndDate
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> frequency: &lt;span style="color:#e6db74">&amp;#39;Daily&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> startDate: aaStartDate
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="deploying-the-module">Deploying the Module&lt;/h2>
&lt;p>The module can be applied using the Azure CLI. The important thing is to verify that you are in the correct subscription first. Then the deployment is straightforward:&lt;/p></description></item><item><title>Azure - Link Collection Cloud Adoption Framework for Azure</title><link>https://www.ophey.net/en/blog/azure-caf-link-collection/</link><pubDate>Mon, 20 Jul 2020 18:44:20 +0200</pubDate><guid>https://www.ophey.net/en/blog/azure-caf-link-collection/</guid><description>&lt;p>The Cloud Adoption Framework is the One Microsoft approach to cloud adoption in Azure, consolidating and sharing best practices from Microsoft employees, partners, and customers. The framework gives customers a set of tools, guidance, and narratives that help shape technology, business, and people strategies for driving desired business outcomes during their adoption effort.&lt;/p>
&lt;h2 id="here-is-a-short-collection-of-links-during-a-caf-related-engagement">Here is a short collection of links during a CAF related engagement:&lt;/h2>
&lt;p>Start with the &lt;a href="https://aka.ms/adopt">CAF documentation&lt;/a> in the Microsoft Docs.&lt;/p></description></item></channel></rss>