Anavem
Languagefr
How to Set Maximum Runtime for Updates in ConfigMgr (MECM)

How to Set Maximum Runtime for Updates in ConfigMgr (MECM)

Configure maximum runtime settings for Windows and third-party updates in Microsoft Endpoint Configuration Manager to prevent timeout failures and optimize deployment success.

April 28, 2026 15 min
mediumconfigmgr 8 steps 15 min

Why Configure Maximum Runtime for ConfigMgr Updates?

Microsoft Endpoint Configuration Manager (MECM) uses maximum runtime settings to determine how long to wait for update installations before marking them as failed. The default 60-minute timeout for service packs and 10-minute timeout for other updates often proves insufficient for modern cumulative updates, which can take 90-180 minutes to install on slower systems.

When updates exceed their maximum runtime, ConfigMgr stops tracking the installation process and reports it as failed, even though the actual installation may continue successfully in the background. This creates false failure reports and can trigger unnecessary remediation actions.

What Are the Current ConfigMgr Runtime Defaults?

Since MECM version 1511, the default maximum runtime values are 60 minutes for service packs and 10 minutes for other updates. Version 2103 introduced enhanced support for third-party updates, and Technical Preview 2112 (December 2021) added the ability to customize maximum runtime for all update types, including third-party software.

These defaults work well for security definition updates and small hotfixes, but modern Windows cumulative updates frequently require 90-180 minutes, especially on systems with traditional hard drives or limited processing power.

How Do Maintenance Windows Interact with Runtime Settings?

Maximum runtime settings work in conjunction with maintenance windows to control update installation timing. The maintenance window must be longer than the maximum runtime plus installation overhead, or ConfigMgr will prevent the update from starting. If an update exceeds its maximum runtime during a maintenance window, ConfigMgr stops tracking it but doesn't terminate the actual installation process.

Implementation Guide

Full Procedure

01

Import the ConfigMgr PowerShell Module

Start by importing the Configuration Manager PowerShell module to enable command-line management of update runtime settings.

Import-Module "$($ENV:SMS_ADMIN_UI_PATH)\..\ConfigurationManager.psd1"

Connect to your site server and set the working location to your site code:

$SiteCode = "PS1"  # Replace with your actual site code
Set-Location "$SiteCode`:"

Verification: Run Get-Location to confirm you're in the ConfigMgr drive (should show something like "PS1:\").

Pro tip: You can find your site code in the MECM console title bar or by running Get-CMSite | Select SiteCode.
02

View Current Maximum Runtime Settings

Before making changes, examine the current maximum runtime values for your updates. This helps you understand which updates might need adjustment.

First, open the MECM console and navigate to Administration > Software Updates > All Software Updates. Add the "Maximum Run Time (Mins)" column to your view by right-clicking the column headers and selecting it.

For PowerShell analysis, check current runtime values for specific update types:

# View Security Monthly Quality Rollups
Get-CMSoftwareUpdate -Fast -Name "*Security Monthly Quality Rollup for Windows*" | Select MaxExecutionTime, DisplayName

# View all Windows 11 cumulative updates
Get-CMSoftwareUpdate -Fast -Name "*Cumulative Update for Windows 11*" | Select MaxExecutionTime, DisplayName
Note: MaxExecutionTime is displayed in seconds, so 3600 = 60 minutes.

Verification: The output should show current runtime values. Default values are typically 3600 seconds (60 minutes) for service packs and 600 seconds (10 minutes) for other updates.

03

Set Runtime for Individual Updates via Console

For targeted adjustments, use the MECM console to modify individual update runtime settings.

In the MECM console, navigate to Administration > Software Updates > All Software Updates. Right-click the update you want to modify and select Properties.

Click the Maximum Run Time tab and adjust the value. For large cumulative updates, consider setting this to 120-180 minutes:

  • Windows 11 cumulative updates: 120 minutes
  • Windows Server cumulative updates: 150 minutes
  • Feature updates: 240 minutes
  • Third-party updates: 90 minutes (varies by vendor)

Click OK to save the changes.

Warning: If the update is already deployed, you must delete the existing deployment and create a new one for clients to recognize the runtime change.

Verification: Return to the All Software Updates view and confirm the "Maximum Run Time (Mins)" column shows your new value.

04

Bulk Update Runtime Settings with PowerShell

For efficiency, use PowerShell to modify multiple updates simultaneously. This is particularly useful for monthly patch cycles.

Set runtime for all Security Monthly Quality Rollups to 120 minutes:

Get-CMSoftwareUpdate -Fast -Name "*Security Monthly Quality Rollup for Windows*" | Set-CMSoftwareUpdate -MaximumExecutionMins 120 -Verbose

For Windows Server 2019/2022 cumulative updates from the last 30 days:

Get-CMSoftwareUpdate -Fast -DatePostedMin (Get-Date).AddDays(-30) | Where-Object LocalizedDisplayName -match '.*Cumulative Update for Windows Server 201[9].*|.*Cumulative Update for Windows Server 202[2].*' | Set-CMSoftwareUpdate -MaximumExecutionMins 150

For all Windows 11 updates posted in the current month:

$FirstDayOfMonth = Get-Date -Day 1 -Hour 0 -Minute 0 -Second 0
Get-CMSoftwareUpdate -Fast -DatePostedMin $FirstDayOfMonth | Where-Object LocalizedDisplayName -match '.*Windows 11.*' | Set-CMSoftwareUpdate -MaximumExecutionMins 120

Verification: Run the Get-CMSoftwareUpdate command again to confirm the MaxExecutionTime values have changed (remember, it's shown in seconds).

05

Configure Third-Party Update Runtime Settings

With MECM version 2103 and later, you can customize maximum runtime for third-party updates, which previously defaulted to fixed values.

First, identify your third-party updates:

# List all third-party updates
Get-CMSoftwareUpdate -Fast | Where-Object {$_.IsSuperseded -eq $false -and $_.LocalizedDisplayName -notmatch 'Microsoft|Windows'} | Select LocalizedDisplayName, MaxExecutionTime

Set runtime for specific third-party vendors (example with Adobe updates):

Get-CMSoftwareUpdate -Fast -Name "*Adobe*" | Set-CMSoftwareUpdate -MaximumExecutionMins 90

For Java updates, which often require longer installation times:

Get-CMSoftwareUpdate -Fast -Name "*Java*" | Set-CMSoftwareUpdate -MaximumExecutionMins 60
Pro tip: Third-party updates often have unpredictable installation times. Start with 90 minutes and adjust based on your deployment reports and client feedback.

Verification: Check the updated values and ensure they align with your maintenance window durations.

06

Validate Maintenance Window Compatibility

Ensure your maintenance windows can accommodate the new maximum runtime settings to prevent installation failures.

Check your current maintenance windows:

# View maintenance windows for a specific collection
Get-CMMaintenanceWindow -CollectionName "Workstations - Patch Group A" | Select Name, Duration, StartTime

Calculate if your windows are sufficient. The maintenance window must be longer than the maximum runtime plus estimated installation overhead (typically 15-30 minutes):

# Check if maintenance windows are adequate for 120-minute updates
$MinRequiredWindow = 150  # 120 minutes runtime + 30 minutes overhead
Get-CMMaintenanceWindow | Where-Object {$_.Duration -lt $MinRequiredWindow} | Select Name, Duration, @{Name='ShortfallMinutes';Expression={$MinRequiredWindow - $_.Duration}}

If windows are too short, extend them or create additional windows:

# Example: Extend a maintenance window to 4 hours (240 minutes)
Set-CMMaintenanceWindow -CollectionName "Servers - Critical" -Name "Monthly Patching" -DurationMinutes 240
Warning: If an update exceeds the maintenance window, ConfigMgr stops tracking the installation (though the actual installation may continue). This results in "Failed" status in reports even if the update installed successfully.

Verification: Run deployment reports after the next patch cycle to confirm no timeout-related failures.

07

Redeploy Updates with New Runtime Settings

For existing deployments, you must redeploy updates for clients to recognize the new maximum runtime values.

Identify deployments that need updating:

# Find deployments for updates you've modified
Get-CMSoftwareUpdateDeployment | Where-Object {$_.AssignmentName -like "*Monthly*"} | Select AssignmentName, CollectionName, DeploymentTime

Delete the existing deployment (this doesn't uninstall updates from clients):

# Remove specific deployment
Remove-CMSoftwareUpdateDeployment -DeploymentName "Monthly Security Updates - March 2026" -Force

Create a new deployment with the updated runtime settings. Use the Software Updates Deployment Wizard or PowerShell:

# Create new deployment
$UpdateGroup = Get-CMSoftwareUpdateGroup -Name "Monthly Security Updates - March 2026"
New-CMSoftwareUpdateDeployment -SoftwareUpdateGroupName $UpdateGroup.LocalizedDisplayName -CollectionName "Workstations - Patch Group A" -DeploymentName "Monthly Security Updates - March 2026 v2" -DeploymentType Required -TimeBasedOn LocalTime -AvailableDateTime (Get-Date) -DeadlineDateTime (Get-Date).AddDays(7)

Verification: Check the deployment properties in the console to confirm the new maximum runtime values are reflected. Monitor initial deployment reports to ensure clients are receiving the updated settings.

08

Monitor and Troubleshoot Runtime Issues

Implement monitoring to track update installation success and identify runtime-related failures.

Create a PowerShell script to monitor update installation times:

# Check recent update installation times from client logs
$Computers = Get-CMDevice -CollectionName "All Systems" | Select -First 10
foreach ($Computer in $Computers) {
    $InstallHistory = Get-WmiObject -ComputerName $Computer.Name -Namespace "root\ccm\SoftwareUpdates\UpdatesStore" -Class CCM_UpdateStatus -ErrorAction SilentlyContinue
    $InstallHistory | Where-Object {$_.Status -eq "Installed" -and $_.ScanTime -gt (Get-Date).AddDays(-7)} | Select PSComputerName, Article, Status, ScanTime
}

Review ConfigMgr logs for timeout-related errors. Key log files to monitor:

  • UpdatesDeployment.log (client): Shows update installation progress and timeouts
  • WindowsUpdate.log (client): Windows Update agent activity
  • WUAHandler.log (client): ConfigMgr interaction with Windows Update

Query the database for timeout failures:

-- Run this query in SQL Server Management Studio against your ConfigMgr database
SELECT 
    ui.BulletinID,
    ui.Title,
    ui.MaxExecutionTime,
    COUNT(*) as FailureCount
FROM v_UpdateInfo ui
INNER JOIN v_UpdateComplianceStatus ucs ON ui.CI_ID = ucs.CI_ID
WHERE ucs.Status = 4 -- Failed status
    AND ui.DatePosted > DATEADD(day, -30, GETDATE())
GROUP BY ui.BulletinID, ui.Title, ui.MaxExecutionTime
ORDER BY FailureCount DESC
Pro tip: Set up automated reports to track updates that consistently exceed their runtime limits. This helps you proactively adjust settings before widespread deployment failures.

Verification: Review deployment success rates over the next month. You should see reduced timeout-related failures for updates where you've increased the maximum runtime.

Frequently Asked Questions

What happens when a ConfigMgr update exceeds its maximum runtime?+
When an update exceeds its maximum runtime, Configuration Manager stops tracking the installation and marks it as failed in reports. However, the actual Windows Update installation process continues running in the background and may complete successfully. This creates a discrepancy between the reported status and actual installation state, requiring manual verification or re-evaluation to get accurate compliance data.
Can I set different maximum runtime values for different types of updates in ConfigMgr?+
Yes, you can set different maximum runtime values for individual updates or groups of updates. Use PowerShell filtering to target specific update types, such as cumulative updates, security rollups, or third-party software updates. For example, you might set 120 minutes for Windows cumulative updates, 60 minutes for security-only updates, and 90 minutes for third-party applications based on their typical installation requirements.
Do I need to redeploy updates after changing their maximum runtime settings?+
Yes, existing deployments must be deleted and recreated for clients to recognize new maximum runtime settings. Simply changing the runtime value in the update properties doesn't automatically update active deployments. This is because the deployment package contains the original runtime configuration, and clients cache this information until they receive a new deployment with updated settings.
How do maintenance windows affect update maximum runtime in ConfigMgr?+
Maintenance windows must be longer than the maximum runtime plus installation overhead (typically 15-30 minutes) for updates to install successfully. If the remaining maintenance window time is shorter than the update's maximum runtime when installation begins, ConfigMgr will not start the installation. Additionally, if an update exceeds its runtime during a maintenance window, ConfigMgr stops tracking but doesn't terminate the installation.
What are the recommended maximum runtime values for different Windows update types?+
Recommended maximum runtime values vary by update type and system performance: Windows 11/10 cumulative updates should use 120-150 minutes, Windows Server cumulative updates need 150-180 minutes, feature updates require 240+ minutes, and third-party updates typically need 60-90 minutes. These recommendations account for slower systems with traditional hard drives and should be adjusted based on your environment's performance characteristics and deployment success rates.

Discussion

Share your thoughts and insights

Sign in to join the discussion