All skills
microsoft avatar

/azure-upgrade

@36a90f7 official

Assess and upgrade Azure workloads between plans, tiers, or SKUs, or modernize Azure SDK dependencies in source code. WHEN: upgrade Consumption to Flex Consumption, upgrade Azure Functions plan, change hosting plan, function app SKU, migrate App Service to Container Apps, modernize legacy Azure Java SDKs (com.microsoft.azure to com.azure), migrate Azure Cache for Redis (ACR/ACRE) to Azure Managed Redis (AMR).

Use this Skill: https://skilld.dev/gh/microsoft/github-copilot-for-azure/azure-upgrade

This session only. Nothing lands on disk.

referenceslanguagesjavatemplatesPROGRESS_TEMPLATE.md

≈2.3k tokens on demand. Your agent reads this file only when SKILL.md points to it.

<!-- This is the upgrade progress tracker for Azure SDK migration. Each step from plan.md should be tracked here with status, changes, verification results, and TODOs. ## EXECUTION RULES !!! DON'T REMOVE THIS COMMENT BLOCK BEFORE UPGRADE IS COMPLETE AS IT CONTAINS IMPORTANT INSTRUCTIONS. ### Success Criteria - **Goal**: All legacy Azure SDK dependencies (com.microsoft.azure.*) replaced with modern equivalents (com.azure.*) - **Compilation**: Both main source code AND test code compile = `mvn clean test-compile` succeeds - **Test**: 100% test pass rate = `mvn clean test` succeeds (or ≥ baseline with documented pre-existing flaky tests) ### Strategy - **Uninterrupted run**: Complete execution without pausing for user input - **NO premature termination**: Token limits, time constraints, or complexity are NEVER valid reasons to skip fixing. - **Automation tools**: Use OpenRewrite etc. for efficiency; always verify output ### Verification Expectations - **Steps 1-N (Setup/Upgrade)**: Focus on COMPILATION SUCCESS (both main and test code). - On compilation success: Commit and proceed (even if tests fail - document count) - On compilation error: Fix IMMEDIATELY and re-verify until both main and test code compile - **NO deferred fixes** (for compilation): "Fix post-merge", "TODO later", "can be addressed separately" are NOT acceptable. Fix NOW or document as genuine unfixable limitation. - **Final Validation Step**: Achieve COMPILATION SUCCESS + 100% TEST PASS. - On test failure: Enter iterative test & fix loop until 100% pass or rollback to last-good-commit after exhaustive fix attempts - **NO deferring test fixes** - this is the final gate - **NO categorical dismissals**: "Test-specific issues", "doesn't affect production", "sample/demo code" are NOT valid reasons to skip. ALL tests must pass. - **NO "close enough" acceptance**: 95% is NOT 100%. Every failing test requires a fix attempt with documented root cause. - **NO blame-shifting**: "Known framework issue", "migration behavior change" require YOU to implement the fix or workaround. ### Review Code Changes (MANDATORY for each step) After completing changes in each step, review code changes BEFORE verification to ensure: 1. **Sufficiency**: All changes required for the upgrade goal are present — no missing modifications that would leave the upgrade incomplete. - All dependencies/plugins listed in the plan for this step are updated - All required code changes (API migrations, import updates, config changes) are made - All compilation and compatibility issues introduced by the upgrade are addressed 2. **Necessity**: All changes are strictly necessary for the upgrade — no unnecessary modifications, refactoring, or "improvements" beyond what's required. This includes: - **Functional Behavior Consistency**: Original code behavior and functionality are maintained: - Business logic unchanged - API contracts preserved (inputs, outputs, error handling) - Expected outputs and side effects maintained - **Security Controls Preservation** (critical subset of behavior): - **Authentication**: Login mechanisms, session management, token validation, MFA configurations - **Authorization**: Role-based access control, permission checks, access policies, security annotations (@PreAuthorize, @Secured, etc.) - **Password handling**: Password encoding/hashing algorithms, password policies, credential storage - **Security configurations**: CORS policies, CSRF protection, security headers, SSL/TLS settings, OAuth/OIDC configurations - **Audit logging**: Security event logging, access logging **Review Code Changes Actions**: - Review each changed file for missing upgrade changes, unintended behavior or security modifications - If behavior must change due to framework requirements, document the change, the reason, and confirm equivalent functionality/protection is maintained - Add missing changes that are required for the upgrade step to be complete - Revert unnecessary changes that don't affect behavior or security controls - Document review results in progress.md and commit message ### Commit Message Format - First line: `Step <x>: <title> - Compile: <result>` or `Step <x>: <title> - Compile: <result>, Tests: <pass>/<total> passed` - Body: Changes summary + concise known issues/limitations (≤5 lines) - **Security note**: If any security-related changes were made, include "Security: <change description and justification>" ### Efficiency (IMPORTANT) - **Targeted reads**: Use `grep` over full file reads; read specific sections, not entire files. Template files are large - only read the section you need. - **Quiet commands**: Use `-q`, `--quiet` for build/test commands when appropriate - **Progressive writes**: Update progress.md incrementally after each step, not at end -->

Upgrade Progress: <PROJECT_NAME> (<RUN_ID>)

  • Started: <timestamp> <!-- replace with actual start timestamp -->
  • Plan Location: .github/java-upgrade/<RUN_ID>/plan.md
  • Total Steps: <number of steps from plan.md>

Step Details

<!-- For each step in plan.md, track progress using this bullet list format: - **Step N: <Step Title>** - **Status**: <status emoji> - 🔘 Not Started - Step has not been started yet - ⏳ In Progress - Currently working on this step - ✅ Completed - Step completed successfully - ❗ Failed - Step failed after exhaustive attempts - **Changes Made**: (≤5 bullets, keep each ≤20 words) - Focus on what changed, not how - **Review Code Changes**: - Sufficiency: ✅ All required changes present / ⚠️ <list missing changes added, short and concise> - Necessity: ✅ All changes necessary / ⚠️ <list unnecessary changes reverted, short and concise> - Functional Behavior: ✅ Preserved / ⚠️ <list unavoidable changes with justification, short and concise> - Security Controls: ✅ Preserved / ⚠️ <list unavoidable changes with justification and equivalent protection, short and concise> - **Verification**: - Command: <actual command executed> - JDK: <JDK path used> - Build tool: <Path of build tool used> - Result: <SUCCESS/FAILURE with details> - Notes: <any skipped checks, excluded modules, known issues> - **Deferred Work**: List any deferred work, temporary workarounds (or "None") - **Commit**: <commit hash> - <commit message first line> --- SAMPLE UPGRADE STEP: - **Step X: Migrate Azure Management Dependencies** - **Status**: ✅ Completed - **Changes Made**: - Added azure-sdk-bom to dependencyManagement - Replaced com.microsoft.azure:azure-mgmt-* with com.azure.resourcemanager - Replaced azure-client-authentication with azure-identity - **Review Code Changes**: - Sufficiency: ✅ All required changes present - Necessity: ✅ All changes necessary - Functional Behavior: ✅ Preserved - API contracts and business logic unchanged - Security Controls: ✅ Preserved - authentication pattern updated with equivalent protection - **Verification**: - Command: `mvn clean test-compile -q` - JDK: /usr/lib/jvm/java-8-openjdk - Build tool: /usr/local/maven/bin/mvn - Result: ✅ Compilation SUCCESS | ⚠️ Tests: 10/12 passed (2 failures deferred to Final Validation) - Notes: 2 test failures related to auth mock setup - **Deferred Work**: Fix 2 test failures in Final Validation step (TestAuthHelper, TestResourceCreation) - **Commit**: abc1234 - Step X: Migrate Azure Management Dependencies - Compile: SUCCESS, Tests: 10/12 passed --- SAMPLE FINAL VALIDATION STEP: - **Step X: Final Validation** - **Status**: ✅ Completed - **Changes Made**: - Verified no legacy com.microsoft.azure.* dependencies remain - Resolved 2 TODOs from Step 3 - Fixed 2 test failures (auth mock setup, resource assertion) - **Review Code Changes**: - Sufficiency: ✅ All required changes present - Necessity: ✅ All changes necessary - Functional Behavior: ✅ Preserved - all business logic and API contracts maintained - Security Controls: ✅ Preserved - all authentication, authorization unchanged - **Verification**: - Command: `mvn clean test -q` - JDK: /usr/lib/jvm/java-8-openjdk - Build tool: /usr/local/maven/bin/mvn - Result: ✅ Compilation SUCCESS | ✅ Tests: 12/12 passed (100% pass rate achieved) - **Deferred Work**: None - all TODOs resolved - **Commit**: xyz3456 - Step X: Final Validation - Compile: SUCCESS, Tests: 12/12 passed -->

Notes

<!-- Additional context, observations, or lessons learned during execution. Use this section for: - Unexpected challenges encountered - Deviation from original plan - Performance observations - Recommendations for future upgrades SAMPLE: - azure-sdk-bom simplified version management significantly - Authentication migration required adding jackson-databind for file-based auth - Modern SDK fluent API method names differ from legacy — migration guide was essential -->

Source: SKILL.md on GitHub

2 warnings4mo5 checks · Risk SAFE
  • Gen Agent Trust Hub4mo

    This skill facilitates Azure workload upgrades and Java SDK modernization. It includes security considerations such as command execution and fetching data from remote sources, which are within the skill's intended purpose of automating cloud and code migrations.

  • Socket4mo

    No alerts

  • Snyk4mo

    Risk: MEDIUM · 2 issues

  • Runlayer6mo

    3/6 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 36a90f7. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 5 months ago
compatibility
python3.10+
metadata
{
  "author": "Microsoft",
  "version": "0.0.0-placeholder"
}
  • Infrastructure
  • azure
  • azure-functions
  • azure-app-service
  • azure-redis
  • java-sdk
  • migrations
  • sku-upgrades
  • consumption-plan
  • flex-consumption

README badge

README badge for microsoft/github-copilot-for-azure/azure-upgrade

Assesses and automates Azure workload upgrades across plans, tiers, and SKUs—such as Functions Consumption to Flex Consumption, App Service to Container Apps, or Redis migrations to Azure Managed Redis. Also modernizes legacy Azure Java SDK dependencies (com.microsoft.azure to com.azure) in source code. Includes readiness checks, configuration migration, and validation steps.

Generated from the current SKILL.md.

Does this skill handle cross-cloud migration?
No. This skill is for Azure-to-Azure upgrades only (plan changes, SKU swaps, service migrations within Azure). For cross-cloud migration, use the `azure-cloud-migrate` skill.
What Azure upgrades does this skill cover?
It handles Azure Functions plan upgrades (Consumption to Flex Consumption), hosting tier changes, App Service to Container Apps migration, Redis cache upgrades (ACR/ACRE to Azure Managed Redis), and legacy Azure Java SDK modernization (com.microsoft.azure to com.azure).
Will this skill delete my existing app without asking?
No. The skill requires explicit user confirmation before stopping or deleting the original app. All destructive actions trigger a confirmation prompt.
Does this skill support Java SDK modernization?
Yes. It handles source-code modernization from legacy Azure Java SDKs (com.microsoft.azure.*) to modern ones (com.azure.*).
What happens after the upgrade is complete?
The skill asks whether you want to verify performance, clean up the old app, or update your infrastructure-as-code. You can then hand off to `azure-validate` for deep validation or `azure-deploy` for CI/CD setup.

Generated from the current SKILL.md. These answers refresh after source changes.