{
    "api_version": "1",
    "kind": "dse_post",
    "self": "https://update.dsesecurity.com/api/v1/posts/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
    "item": {
        "id": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
        "slug": "dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts",
        "url": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
        "alternate_urls": {
            "markdown": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts.md",
            "json": "https://update.dsesecurity.com/api/v1/posts/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/"
        },
        "title": "Freeze rolling-upgrade phase and skip decisions before the upgrade starts",
        "summary": "Will changing application-emitted phase or skip metrics alter a rolling upgrade already in progress?",
        "format": {
            "slug": "guide",
            "name": "Guide"
        },
        "priority": {
            "slug": "info",
            "name": "Information"
        },
        "featured": false,
        "image": {
            "theme": "continuity-recovery",
            "label": "Continuity & recovery",
            "alt": "Paired infrastructure paths converging on a stable recovered service.",
            "card_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-card.webp?v=1.8.20",
            "hero_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-hero.webp?v=1.8.20",
            "social_url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
            "width": 2400,
            "height": 1350
        },
        "topics": [
            {
                "slug": "business-continuity",
                "name": "Business Continuity",
                "url": "https://update.dsesecurity.com/topic/business-continuity/"
            },
            {
                "slug": "it",
                "name": "IT",
                "url": "https://update.dsesecurity.com/topic/it/"
            }
        ],
        "author": {
            "name": "DSE Security Editorial Team",
            "url": "https://update.dsesecurity.com/#editorial-team",
            "type": "Organization"
        },
        "publisher": {
            "name": "Detection Systems & Engineering",
            "url": "https://dsesecurity.com/"
        },
        "published_at": "2026-09-10T00:22:38+00:00",
        "modified_at": "2026-09-10T02:14:31+00:00",
        "reviewed_on": "2026-09-09",
        "reading_minutes": 2,
        "word_count": 257,
        "potentially_affected": "Azure scale sets using rolling-upgrade custom metrics from rich HTTP/HTTPS Application Health extension responses.",
        "dse_recommendation": "Validate the reported phase and skip decisions before starting a rolling upgrade, and retain that input snapshot with the operation.",
        "primary_source": {
            "name": "Custom metrics for rolling upgrades on Virtual Machine Scale Sets - Azure Virtual Machine Scale Sets | Microsoft Learn",
            "url": "https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-rolling-upgrade-custom-metrics",
            "published_on": null,
            "authority": "Microsoft Learn"
        },
        "publishing_principles": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
        "usage_info": "https://update.dsesecurity.com/usage/",
        "copyright_notice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
        "content_html": "<h2>Source facts</h2>\n<p>Rolling-upgrade custom metrics require rich Application Health extension states over HTTP or HTTPS; binary states and TCP are unsupported for this integration. Azure reads the metrics when the upgrade starts, so mid-upgrade changes do not alter that operation. Phases run in numeric order, with every batch in a phase completed before the next; a missing phase places the VM last. A true skip decision excludes an instance. The customMetrics payload must be a JSON string, not a nested object. <a href=\"https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-rolling-upgrade-custom-metrics\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft Learn</a>.</p>\n<h2>Applicability</h2>\n<p>Use this check when applications emit their own rollout ordering or omission decisions. Confirm a healthy application state before expecting inclusion, as required by the source. Keep these inputs separate from an assumption that every later health response rewrites the active rollout plan.</p>\n<h2>DSE recommendation</h2>\n<p>Validate the reported phase and skip decisions before starting a rolling upgrade, and retain that input snapshot with the operation. Have each application owner justify omitted instances and define how their later update will be tracked. Review machines with no phase deliberately instead of letting a missing field silently stand in for the intended order.</p>\n<h2>Verification</h2>\n<p>Inspect the reported custom-metrics substatus for representative instances and compare it with the intended phases. Rehearse a small rollout and confirm the observed batch sequence and skipped population. If an owner changes a decision after the operation begins, record the change separately and reassess the rollout rather than claiming the active operation adopted it. Retain remaining outdated instances as explicit follow-up work.</p>\n<h2>Official references</h2>\n<p><a href=\"https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-rolling-upgrade-custom-metrics\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft Learn: Rolling-upgrade custom metrics</a>. Source reviewed September 9, 2026.</p>",
        "content_text": "Source facts\nRolling-upgrade custom metrics require rich Application Health extension states over HTTP or HTTPS; binary states and TCP are unsupported for this integration. Azure reads the metrics when the upgrade starts, so mid-upgrade changes do not alter that operation. Phases run in numeric order, with every batch in a phase completed before the next; a missing phase places the VM last. A true skip decision excludes an instance. The customMetrics payload must be a JSON string, not a nested object. Microsoft Learn.\nApplicability\nUse this check when applications emit their own rollout ordering or omission decisions. Confirm a healthy application state before expecting inclusion, as required by the source. Keep these inputs separate from an assumption that every later health response rewrites the active rollout plan.\nDSE recommendation\nValidate the reported phase and skip decisions before starting a rolling upgrade, and retain that input snapshot with the operation. Have each application owner justify omitted instances and define how their later update will be tracked. Review machines with no phase deliberately instead of letting a missing field silently stand in for the intended order.\nVerification\nInspect the reported custom-metrics substatus for representative instances and compare it with the intended phases. Rehearse a small rollout and confirm the observed batch sequence and skipped population. If an owner changes a decision after the operation begins, record the change separately and reassess the rollout rather than claiming the active operation adopted it. Retain remaining outdated instances as explicit follow-up work.\nOfficial references\nMicrosoft Learn: Rolling-upgrade custom metrics. Source reviewed September 9, 2026.",
        "content_markdown": "## Source facts\n\nRolling-upgrade custom metrics require rich Application Health extension states over HTTP or HTTPS; binary states and TCP are unsupported for this integration. Azure reads the metrics when the upgrade starts, so mid-upgrade changes do not alter that operation. Phases run in numeric order, with every batch in a phase completed before the next; a missing phase places the VM last. A true skip decision excludes an instance. The customMetrics payload must be a JSON string, not a nested object. [Microsoft Learn](https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-rolling-upgrade-custom-metrics).\n\n## Applicability\n\nUse this check when applications emit their own rollout ordering or omission decisions. Confirm a healthy application state before expecting inclusion, as required by the source. Keep these inputs separate from an assumption that every later health response rewrites the active rollout plan.\n\n## DSE recommendation\n\nValidate the reported phase and skip decisions before starting a rolling upgrade, and retain that input snapshot with the operation. Have each application owner justify omitted instances and define how their later update will be tracked. Review machines with no phase deliberately instead of letting a missing field silently stand in for the intended order.\n\n## Verification\n\nInspect the reported custom-metrics substatus for representative instances and compare it with the intended phases. Rehearse a small rollout and confirm the observed batch sequence and skipped population. If an owner changes a decision after the operation begins, record the change separately and reassess the rollout rather than claiming the active operation adopted it. Retain remaining outdated instances as explicit follow-up work.\n\n## Official references\n\n[Microsoft Learn: Rolling-upgrade custom metrics](https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-rolling-upgrade-custom-metrics). Source reviewed September 9, 2026."
    },
    "json_ld": {
        "@context": "https://schema.org",
        "@graph": [
            {
                "@type": "Organization",
                "@id": "https://dsesecurity.com/#organization",
                "name": "Detection Systems & Engineering",
                "alternateName": "DSE Security",
                "url": "https://dsesecurity.com/",
                "logo": {
                    "@type": "ImageObject",
                    "url": "https://update.dsesecurity.com/assets/dse-logo-20260812.png?v=1.8.20"
                }
            },
            {
                "@type": "Organization",
                "@id": "https://update.dsesecurity.com/#editorial-team",
                "name": "DSE Security Editorial Team",
                "url": "https://update.dsesecurity.com/",
                "parentOrganization": {
                    "@id": "https://dsesecurity.com/#organization"
                }
            },
            {
                "@type": "WebSite",
                "@id": "https://update.dsesecurity.com/#website",
                "name": "DSE Updates",
                "alternateName": "DSE Security Knowledge Hub",
                "url": "https://update.dsesecurity.com/",
                "inLanguage": "en-US",
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "potentialAction": {
                    "@type": "SearchAction",
                    "target": {
                        "@type": "EntryPoint",
                        "urlTemplate": "https://update.dsesecurity.com/?q={search_term_string}"
                    },
                    "query-input": "required name=search_term_string"
                }
            },
            {
                "@type": "WebPage",
                "@id": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
                "url": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
                "isPartOf": {
                    "@id": "https://update.dsesecurity.com/#website"
                },
                "lastReviewed": "2026-09-09"
            },
            {
                "@type": "BreadcrumbList",
                "@id": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/#breadcrumbs",
                "itemListElement": [
                    {
                        "@type": "ListItem",
                        "position": 1,
                        "name": "DSE Updates",
                        "item": "https://update.dsesecurity.com/"
                    },
                    {
                        "@type": "ListItem",
                        "position": 2,
                        "name": "Freeze rolling-upgrade phase and skip decisions before the upgrade starts",
                        "item": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/"
                    }
                ]
            },
            {
                "@type": [
                    "Article",
                    "TechArticle"
                ],
                "@id": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/#article",
                "identifier": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
                "url": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/",
                "headline": "Freeze rolling-upgrade phase and skip decisions before the upgrade starts",
                "description": "Will changing application-emitted phase or skip metrics alter a rolling upgrade already in progress?",
                "abstract": "Will changing application-emitted phase or skip metrics alter a rolling upgrade already in progress?",
                "articleBody": "Source facts\nRolling-upgrade custom metrics require rich Application Health extension states over HTTP or HTTPS; binary states and TCP are unsupported for this integration. Azure reads the metrics when the upgrade starts, so mid-upgrade changes do not alter that operation. Phases run in numeric order, with every batch in a phase completed before the next; a missing phase places the VM last. A true skip decision excludes an instance. The customMetrics payload must be a JSON string, not a nested object. Microsoft Learn.\nApplicability\nUse this check when applications emit their own rollout ordering or omission decisions. Confirm a healthy application state before expecting inclusion, as required by the source. Keep these inputs separate from an assumption that every later health response rewrites the active rollout plan.\nDSE recommendation\nValidate the reported phase and skip decisions before starting a rolling upgrade, and retain that input snapshot with the operation. Have each application owner justify omitted instances and define how their later update will be tracked. Review machines with no phase deliberately instead of letting a missing field silently stand in for the intended order.\nVerification\nInspect the reported custom-metrics substatus for representative instances and compare it with the intended phases. Rehearse a small rollout and confirm the observed batch sequence and skipped population. If an owner changes a decision after the operation begins, record the change separately and reassess the rollout rather than claiming the active operation adopted it. Retain remaining outdated instances as explicit follow-up work.\nOfficial references\nMicrosoft Learn: Rolling-upgrade custom metrics. Source reviewed September 9, 2026.",
                "datePublished": "2026-09-10T00:22:38+00:00",
                "dateModified": "2026-09-10T02:14:31+00:00",
                "mainEntityOfPage": {
                    "@id": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/"
                },
                "inLanguage": "en-US",
                "isAccessibleForFree": true,
                "author": {
                    "@type": "Organization",
                    "name": "DSE Security Editorial Team",
                    "url": "https://update.dsesecurity.com/#editorial-team"
                },
                "publisher": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "image": {
                    "@type": "ImageObject",
                    "@id": "https://update.dsesecurity.com/updates/dse-20260909-558-freeze-rolling-upgrade-phase-and-skip-decisions-before-the-upgrade-starts/#primaryimage",
                    "url": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
                    "contentUrl": "https://update.dsesecurity.com/assets/editorial/continuity-recovery-social-v2.jpg?v=1.8.20",
                    "width": 1200,
                    "height": 630,
                    "caption": "Freeze rolling-upgrade phase and skip decisions before the upgrade starts"
                },
                "articleSection": [
                    "Business Continuity",
                    "IT"
                ],
                "keywords": [
                    "Business Continuity",
                    "IT",
                    "Guide",
                    "Information priority"
                ],
                "genre": "Guide",
                "about": [
                    {
                        "@type": "Thing",
                        "name": "Business Continuity",
                        "url": "https://update.dsesecurity.com/topic/business-continuity/"
                    },
                    {
                        "@type": "Thing",
                        "name": "IT",
                        "url": "https://update.dsesecurity.com/topic/it/"
                    }
                ],
                "wordCount": 257,
                "timeRequired": "PT2M",
                "publishingPrinciples": "https://update.dsesecurity.com/updates/dse-updates-editorial-methodology/",
                "usageInfo": "https://update.dsesecurity.com/usage/",
                "copyrightHolder": {
                    "@id": "https://dsesecurity.com/#organization"
                },
                "copyrightNotice": "Copyright © 2026 Detection Systems & Engineering. All rights reserved.",
                "citation": {
                    "@type": "CreativeWork",
                    "name": "Custom metrics for rolling upgrades on Virtual Machine Scale Sets - Azure Virtual Machine Scale Sets | Microsoft Learn",
                    "url": "https://learn.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-rolling-upgrade-custom-metrics"
                }
            }
        ]
    }
}