Control 2.10: Patch Management and System Updates
Overview
Control ID: 2.10 Control Name: Patch Management and System Updates Regulatory Reference: GLBA 501(b), SOX 404, FINRA 4511, SEC 17a-4 Setup Time: 1-2 hours initial setup, ongoing monitoring
Purpose
This control establishes patch management and update procedures for AI agents and the underlying platform infrastructure in financial institutions. While Microsoft manages core platform updates for SaaS services (Power Platform, Microsoft 365), organizations remain responsible for monitoring platform changes, managing custom component updates, testing compatibility, and ensuring update documentation for audit purposes. This control defines processes to track Microsoft service updates, manage custom connector/component patches, and maintain change documentation for regulatory compliance.
Prerequisites
Primary Owner Admin Role: Power Platform Admin Supporting Roles: None
Required Licenses
- Microsoft 365 E3/E5 (for Service Health access)
- Power Platform per-user or per-app licenses
- Azure DevOps or equivalent for pipeline management
Required Permissions
- Global Reader or Service Health Administrator (M365 Admin)
- Power Platform Administrator (platform management)
- Azure DevOps Project Administrator (if using Azure DevOps)
Dependencies
- Control 2.3 (Change Management)
- Control 2.4 (Business Continuity)
- Control 2.5 (Testing and Validation)
Pre-Setup Checklist
- [ ] Patch management policy approved
- [ ] Notification recipients identified
- [ ] Testing environments established
- [ ] Rollback procedures documented
Governance Levels
Baseline (Level 1)
Stay current with Microsoft security patches; document patch schedule.
Recommended (Level 2-3)
Automated patching for non-production; scheduled patching for production (minimal disruption).
Regulated/High-Risk (Level 4)
Patches applied within 30 days of release; critical patches within 7 days; all updates logged.
Setup & Configuration
Step 1: Configure Service Health Notifications
Microsoft 365 Admin Center:
- Navigate to admin.microsoft.com
- Go to Health → Service health
- Click Customize → Email
- Configure notifications:
- Send email notifications: Enabled
- Services: Power Platform, Microsoft 365, SharePoint, Teams
- Event types: Incidents, Advisories, Planned Maintenance
- Recipients: IT operations, AI governance team
Message Center Notifications:
- Go to Health → Message center
- Click Preferences
- Configure:
- Email digest: Weekly
- Major updates: Immediate notification
- Data privacy updates: Immediate notification
Step 2: Monitor Power Platform Updates
Power Platform Admin Center:
- Navigate to admin.powerplatform.microsoft.com
- Go to Settings → Product updates
- Review:
- Current version: Document baseline
- Upcoming updates: Note scheduled changes
- Release wave: Identify impacting features
Subscribe to Release Notes:
- Bookmark: https://learn.microsoft.com/en-us/power-platform/released-versions/
- Subscribe to Power Platform Blog: https://powerapps.microsoft.com/blog/
- Follow Microsoft 365 Roadmap: https://www.microsoft.com/microsoft-365/roadmap
Step 3: Create Patch Tracking System
Build SharePoint list to track all updates affecting agents.
Create SharePoint List: Patch Tracking Log
| Column | Type | Purpose |
|---|---|---|
| Update ID | Text | Microsoft KB or update ID |
| Update Title | Text | Description of update |
| Service | Choice | Power Platform, M365, Azure, Custom |
| Severity | Choice | Critical, High, Medium, Low |
| Release Date | Date | When update was released |
| Target Apply Date | Date | When to apply (based on severity) |
| Actual Apply Date | Date | When actually applied |
| Environment | Choice | Dev, Test, UAT, Prod |
| Testing Status | Choice | Pending, In Progress, Passed, Failed |
| Applied By | Person | Who applied the update |
| Notes | Multi-line text | Testing results, issues |
| Rollback Required | Yes/No | Did update need rollback |
Step 4: Define Patch Application Schedule
Establish timeline requirements based on severity.
Patch Timeline Matrix:
| Severity | Description | Timeline (Tier 1/2) | Timeline (Tier 3) |
|---|---|---|---|
| Critical | Security vulnerability, active exploit | 7 days | 72 hours |
| High | Security patch, no known exploit | 14 days | 7 days |
| Medium | Feature update with breaking change | 30 days | 14 days |
| Low | Feature update, non-breaking | 90 days | 30 days |
| Advisory | Information only, no action required | Document only | Document only |
Step 5: Configure Custom Component Update Process
For custom connectors, PCF controls, and plugins.
Custom Component Inventory:
- Navigate to Power Platform Admin Center
- Go to Solutions in each environment
- Document all custom components:
- Custom connectors (version, owner)
- PCF controls (version, dependencies)
- Plugins/custom workflow activities
- Power Automate custom actions
Update Process for Custom Components:
- Monitor dependencies (NuGet, npm packages)
- Schedule quarterly dependency reviews
- Test updates in Dev environment
- Promote through pipeline after validation
- Document all updates in patch log
Step 6: Implement Pre-Production Testing
Test all updates before production deployment.
Testing Workflow:
- Dev Environment: Apply update immediately on release
- Test Environment: Apply after 48 hours (initial bugs surface)
- UAT Environment: Apply after 7 days with user validation
- Production: Apply after UAT sign-off
Automated Testing Checklist:
- [ ] Agent responds to baseline test scenarios
- [ ] All connectors authenticate successfully
- [ ] Performance within baseline thresholds
- [ ] No new errors in error log
- [ ] CSAT survey still functional
Step 7: Create Update Communication Plan
Notify stakeholders of upcoming and completed updates.
Communication Templates:
Pre-Update Notification (3 days before):
Subject: [Scheduled] Platform Update - [Environment] - [Date]
Team,
The following update will be applied to [Environment] on [Date]:
Update: [Title]
Service: [Power Platform/M365/etc.]
Expected Impact: [Description]
Downtime: [Expected duration or "None"]
Please complete any critical work before [maintenance window].
For questions, contact [IT Operations].
Post-Update Notification:
Subject: [Complete] Platform Update Applied - [Environment]
Team,
The following update has been applied to [Environment]:
Update: [Title]
Applied: [Date/Time]
Status: Successful / Successful with Notes / Rollback Required
Notes: [Any issues or observations]
If you experience issues, report to [IT Operations].
Step 8: Document Rollback Procedures
Ensure every update has a rollback plan.
Rollback Decision Matrix:
| Scenario | Action | Timeline |
|---|---|---|
| Critical agent failure after update | Immediate rollback | < 1 hour |
| Performance degradation > 20% | Rollback after investigation | < 4 hours |
| Minor bugs, workaround available | Monitor, schedule fix | 24-48 hours |
| Cosmetic issues only | Document for vendor | Next patch cycle |
Rollback Procedure:
- Document current state (error logs, symptoms)
- Notify stakeholders of rollback decision
- For solution updates: Import previous solution version
- For platform updates: Open Microsoft support case
- Validate rollback successful
- Post-incident review within 48 hours
PowerShell Configuration
# ============================================================
# Control 2.10: Patch Management and System Updates
# ============================================================
# Connect to required services
Connect-MgGraph -Scopes "ServiceHealth.Read.All", "ServiceMessage.Read.All"
Import-Module Microsoft.PowerApps.Administration.PowerShell
# -------------------------------------------------------------
# Section 1: Retrieve Service Health Status
# -------------------------------------------------------------
Write-Host "Retrieving Microsoft 365 Service Health..." -ForegroundColor Cyan
# Get service health issues
$ServiceHealth = Get-MgServiceAnnouncementHealthOverview -All
Write-Host "Service Health Status:" -ForegroundColor Yellow
$ServiceHealth | ForEach-Object {
$StatusColor = switch ($_.Status) {
"ServiceOperational" { "Green" }
"ServiceDegradation" { "Yellow" }
"ServiceInterruption" { "Red" }
default { "White" }
}
Write-Host " $($_.Service): $($_.Status)" -ForegroundColor $StatusColor
}
# Get active issues
$ActiveIssues = Get-MgServiceAnnouncementIssue -Filter "isResolved eq false"
if ($ActiveIssues.Count -gt 0) {
Write-Host "`nActive Service Issues:" -ForegroundColor Red
$ActiveIssues | ForEach-Object {
Write-Host " [$($_.Classification)] $($_.Title)" -ForegroundColor Yellow
Write-Host " Service: $($_.Service)"
Write-Host " Start: $($_.StartDateTime)"
}
} else {
Write-Host "`n✅ No active service issues" -ForegroundColor Green
}
# -------------------------------------------------------------
# Section 2: Retrieve Message Center Updates
# -------------------------------------------------------------
Write-Host "`nRetrieving Message Center updates..." -ForegroundColor Cyan
# Get recent message center posts
$RecentMessages = Get-MgServiceAnnouncementMessage -Top 50 |
Where-Object { $_.Services -contains "Power Platform" -or $_.Services -contains "Microsoft 365" }
$RelevantUpdates = $RecentMessages | Select-Object `
Title,
@{N="Category";E={$_.Category}},
@{N="Severity";E={$_.Severity}},
@{N="Published";E={$_.StartDateTime}},
@{N="ActionRequired";E={$_.ActionRequiredByDateTime}},
@{N="Services";E={$_.Services -join ", "}}
Write-Host "Recent Platform Updates:" -ForegroundColor Yellow
$RelevantUpdates | Format-Table -AutoSize
# Export to CSV
$RelevantUpdates | Export-Csv "MessageCenter_Updates_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
# -------------------------------------------------------------
# Section 3: Check Power Platform Environment Versions
# -------------------------------------------------------------
Write-Host "`nChecking Power Platform environment versions..." -ForegroundColor Cyan
$Environments = Get-AdminPowerAppEnvironment
$EnvVersions = foreach ($Env in $Environments) {
[PSCustomObject]@{
EnvironmentName = $Env.DisplayName
Location = $Env.Location
Type = $Env.EnvironmentType
Created = $Env.CreatedTime
# Note: Detailed version info requires Dataverse API
Status = $Env.States.Management.Id
}
}
$EnvVersions | Format-Table -AutoSize
# -------------------------------------------------------------
# Section 4: Identify Custom Components for Update Review
# -------------------------------------------------------------
Write-Host "`nIdentifying custom components requiring review..." -ForegroundColor Cyan
$CustomComponents = @()
foreach ($Env in $Environments) {
# Get custom connectors
$Connectors = Get-AdminPowerAppConnector -EnvironmentName $Env.EnvironmentName -ErrorAction SilentlyContinue |
Where-Object { $_.ConnectorId -like "*shared_*" }
foreach ($Connector in $Connectors) {
$CustomComponents += [PSCustomObject]@{
Environment = $Env.DisplayName
ComponentType = "Custom Connector"
Name = $Connector.DisplayName
Id = $Connector.ConnectorId
Created = $Connector.CreatedTime
NeedsReview = $true
}
}
}
if ($CustomComponents.Count -gt 0) {
Write-Host "Custom components identified for update review:" -ForegroundColor Yellow
$CustomComponents | Format-Table -AutoSize
$CustomComponents | Export-Csv "Custom_Components_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
} else {
Write-Host "No custom components found" -ForegroundColor Green
}
# -------------------------------------------------------------
# Section 5: Generate Patch Compliance Report
# -------------------------------------------------------------
Write-Host "`nGenerating patch management compliance report..." -ForegroundColor Cyan
# Identify updates requiring action
$ActionRequired = $RecentMessages | Where-Object {
$_.ActionRequiredByDateTime -ne $null -and
$_.ActionRequiredByDateTime -gt (Get-Date)
}
$PatchReport = @"
===============================================================================
PATCH MANAGEMENT COMPLIANCE REPORT
Generated: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')
===============================================================================
SERVICE HEALTH SUMMARY
----------------------
Total Services Monitored: $($ServiceHealth.Count)
Operational: $(($ServiceHealth | Where-Object { $_.Status -eq "ServiceOperational" }).Count)
Degraded: $(($ServiceHealth | Where-Object { $_.Status -eq "ServiceDegradation" }).Count)
Interrupted: $(($ServiceHealth | Where-Object { $_.Status -eq "ServiceInterruption" }).Count)
MESSAGE CENTER UPDATES
----------------------
Recent Platform Updates: $($RelevantUpdates.Count)
Updates Requiring Action: $($ActionRequired.Count)
$(if ($ActionRequired.Count -gt 0) {
"UPDATES REQUIRING ACTION:
$(($ActionRequired | ForEach-Object { "- $($_.Title) (Due: $($_.ActionRequiredByDateTime))" }) -join "`n")
"
} else {
"✅ No updates currently requiring action"
})
CUSTOM COMPONENTS
-----------------
Total Custom Components: $($CustomComponents.Count)
Connectors: $(($CustomComponents | Where-Object { $_.ComponentType -eq "Custom Connector" }).Count)
POWER PLATFORM ENVIRONMENTS
---------------------------
$(($EnvVersions | ForEach-Object { "- $($_.EnvironmentName) ($($_.Type))" }) -join "`n")
COMPLIANCE STATUS
-----------------
[?] Service health notifications configured
[?] Message center notifications enabled
[?] Patch tracking SharePoint list created
[?] Testing workflow established
[?] Rollback procedures documented
[?] Communication templates ready
NEXT ACTIONS
------------
1. Review all updates requiring action above
2. Schedule testing for applicable updates
3. Update patch tracking log
4. Complete monthly patch compliance review
===============================================================================
"@
$PatchReport | Out-File "Patch_Compliance_Report_$(Get-Date -Format 'yyyyMMdd').txt"
Write-Host $PatchReport
# -------------------------------------------------------------
# Section 6: Create Patch Calendar Events
# -------------------------------------------------------------
Write-Host "`nPatch calendar events to create:" -ForegroundColor Cyan
$UpcomingPatches = $ActionRequired | ForEach-Object {
[PSCustomObject]@{
Title = "Review: $($_.Title)"
DueDate = $_.ActionRequiredByDateTime
Priority = switch ($_.Severity) {
"High" { "Critical" }
"Normal" { "Medium" }
default { "Low" }
}
Services = $_.Services -join ", "
}
}
if ($UpcomingPatches.Count -gt 0) {
Write-Host "Add these to your patch management calendar:" -ForegroundColor Yellow
$UpcomingPatches | Format-Table -AutoSize
} else {
Write-Host "No upcoming patch deadlines" -ForegroundColor Green
}
Write-Host "`nPatch management review complete" -ForegroundColor Green
Financial Sector Considerations
Regulatory Alignment
| Regulation | Patch Requirement | Control Implementation |
|---|---|---|
| GLBA 501(b) | Protect against anticipated threats | Timely security patches |
| SOX 404 | IT general controls for financial systems | Documented patch process |
| FINRA 4511 | Maintain systems and records | Patch activity logging |
| SEC 17a-4 | Preserve records and audit trail | Patch decision documentation |
| FFIEC CAT | Vulnerability and patch management | Risk-based patching timeline |
| PCI DSS 6.2 | Install security patches within 30 days | Critical patches within timeline |
Zone-Specific Configuration
| Zone | Patch Timeline | Testing Requirement | Documentation |
|---|---|---|---|
| Zone 1 - Personal | Follow Microsoft auto-updates | None | Acknowledge only |
| Zone 2 - Team | 14-30 days based on severity | Functional testing | Change log entry |
| Zone 3 - Enterprise | 7-14 days based on severity | Full regression testing | CAB approval, full audit |
FSI Patch Considerations
Trading Hours Impact:
- No patches during market hours (9:30 AM - 4:00 PM ET)
- Weekend maintenance windows preferred
- Holiday schedule awareness (exchange calendars)
Regulatory Reporting Systems:
- Coordinate with reporting deadlines
- Avoid patches during month-end close
- Extra validation for calculation changes
Customer-Facing Systems:
- Low-usage windows for customer portals
- Communication to customers for planned maintenance
- Rollback capability within SLA
Verification & Testing
Verification Steps
- Notification Configuration
- Microsoft 365 Admin Center → Health → Service health → Email settings
- Verify recipients configured
-
Confirm test email received
-
Message Center Subscriptions
- Check Message Center preferences
- Verify Power Platform updates appearing
-
Confirm weekly digest received
-
Patch Tracking Active
- Review SharePoint patch log
- Verify recent updates documented
-
Confirm responsible parties assigned
-
Testing Workflow Functional
- Recent patch applied to Dev first
- Test results documented
- Production deployment followed process
Compliance Checklist
- [ ] Service Health email notifications enabled
- [ ] Message Center preferences configured
- [ ] Patch tracking SharePoint list created
- [ ] Patch timeline matrix documented
- [ ] Testing workflow defined
- [ ] Rollback procedures documented
- [ ] Communication templates created
- [ ] Custom component inventory maintained
- [ ] Monthly patch review scheduled
Troubleshooting & Validation
Issue: Not Receiving Service Health Notifications
Symptoms: No emails for platform issues Solution:
- Check notification settings in M365 Admin Center
- Verify email addresses are valid
- Check spam/junk folders
- Confirm user has Global Reader role minimum
- Test with manual notification send
Issue: Platform Update Broke Agent Functionality
Symptoms: Agent fails after Microsoft update Solution:
- Check Microsoft Service Health for known issues
- Review Message Center for breaking changes
- Test in lower environment to isolate issue
- Open Microsoft support case if platform issue
- Implement workaround while awaiting fix
- Document incident for future reference
Issue: Custom Connector Stops Working After Update
Symptoms: Connector authentication or calls fail Solution:
- Check connector API provider for changes
- Review connector logs for error details
- Update connector definition if API changed
- Re-authenticate connection if tokens expired
- Test in isolation to identify root cause
Issue: Patch Testing Delayed Production Deployment
Symptoms: Security patch not applied within timeline Solution:
- Expedite testing with focused scope
- Document risk and obtain approval for timeline extension
- Implement compensating controls if needed
- Escalate to CAB for priority decision
- Post-incident review of process improvement
Additional Resources
- Microsoft 365 Service Health
- Power Platform release plans
- Message Center overview
- Power Platform admin center settings
- Microsoft 365 Roadmap
Related Controls
| Control | Relationship |
|---|---|
| 2.3 - Change Management | Patches follow change process |
| 2.4 - BC/DR | Rollback part of DR |
| 2.5 - Testing and Validation | Test before production |
| 1.8 - Runtime Protection | Security patches reduce threats |
| 3.1 - Agent Inventory | Track agent versions |
Support & Questions
For implementation support or questions about this control, contact:
- AI Governance Lead (governance direction)
- Compliance Officer (regulatory requirements)
- Technical Implementation Team (platform setup)
Updated: Dec 2025
Version: v1.0 Beta (Dec 2025)
UI Verification Status: ❌ Needs verification