Configuration ManagerDeep dive

Application deployment error codes in Configuration Manager: 0x87D codes and exit codes

What 0x87D00324, 0x87D00607, 0x87D01106, 0x87D00213, 1603, 1618, 3010 and 40 more app deployment codes mean, how return codes map, and the first thing to check.

A Configuration Manager application that fails in Software Center leaves a hex code, and AppEnforce.log adds the installer's exit code. This quick reference lists 47 codes you meet when deploying apps: Microsoft's meaning, the usual cause and the first check, plus how the Return Codes tab turns an exit code into success, a restart or a retry.

Codes in this quick reference

  • 0x87D00202 Service is shutting downSoftware Center / console deployment status
  • 0x87D00207 / 0x87D00235 / 0x87D00244 Parsing error / Syntax error occurred while parsing / object or subsystem not initializedSoftware Center / console deployment status
  • 0x87D00215 Item not foundSoftware Center / console deployment status
  • 0x87D0027C / 0x87D00289 CI documents download timed out / Failed to decompress CI documentsCIAgent.log / CIDownloader.log
  • 0x87D00314 CI Version Info timed outSoftware Center / console deployment status
  • 0x87D00329 Application requirement evaluation or detection failedAppIntentEval.log
  • 0x87D00324 The application was not detected after installation completedSoftware Center / AppDiscovery.log
  • 0x87D00325 Application was still detected after uninstall completedSoftware Center / AppEnforce.log

+ 39 more codes in the tables below.

How this guide is organized: How to read these codes → Configuration Manager client codes → Installer exit codes and return codes → Windows, WMI and Windows Update codes → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. Configuration Manager client codes (3 parts: Evaluation, policy and detection; Enforcement and run time; Content download). 3. Installer exit codes and return codes. 4. Windows, WMI and Windows Update codes. 5. How to verify a fix. Toolbox: 0x87D00324, 0x87D00202, 0x87D00207, AppEnforce.log, DataTransferService.log.1How to readthese codes2ConfigurationManager clien…3Installer exitcodes and ret…4Windows, WMIand Windows…5How to verify afixEvaluation, policy anddetectionEnforcement and runtimeContent downloadTOOLBOX0x87D003240x87D002020x87D00207AppEnforce.logDataTransferService.logHow this guide is organized: How to read these codes → Configuration Manager client codes → Installer exit codes and return codes → Windows, WMI and Windows Update codes → How to verify a fixFlow diagram of the article's sections in reading order: 1. How to read these codes. 2. Configuration Manager client codes (3 parts: Evaluation, policy and detection; Enforcement and run time; Content download). 3. Installer exit codes and return codes. 4. Windows, WMI and Windows Update codes. 5. How to verify a fix. Toolbox: 0x87D00324, 0x87D00202, 0x87D00207, AppEnforce.log, DataTransferService.log.1How to read these codes2Configuration Manager client codesEvaluation, policy and detectionEnforcement and run timeContent download3Installer exit codes and return codes4Windows, WMI and Windows Update codes5How to verify a fixTOOLBOX0x87D003240x87D002020x87D00207AppEnforce.logDataTransferService.log
At a glance: how this guide is organized · 3 steps · 5 key settings and tools

How to read these codes#

How to tell which family an app deployment code belongs toWhat does the code look like? if 0x87D0 or 0x87D1: Configuration Manager client code (Use the client codes table; the client logs say which stage failed.); if Plain decimal: Is the exit code on the deployment type's Return Codes tab? if Yes: Handled as that return code type (Success, Soft Reboot, Hard Reboot, Fast Retry or Failure.); if No: Treated as an execution failure (If the vendor documents it as success, add it as Success (no reboot).); if Other hex code: Windows, COM, WMI or Windows Update code (0x80041 is WMI; 0x0024 and 0x8024 are Windows Update Agent (an .msu app).)What does the code look like?NOTEConfiguration Managerclient codeUse the client codes table;the client logs say whichstage failed.0x87D0 or 0x87D1Is the exit code on thedeployment type's ReturnCodes tab?NOTEHandled as that returncode typeSuccess, Soft Reboot, HardReboot, Fast Retry orFailure.YesFIXTreated as anexecution failureIf the vendor documents itas success, add it asSuccess (no reboot).NoPlain decimalNOTEWindows, COM, WMI orWindows Update code0x80041 is WMI; 0x0024and 0x8024 are WindowsUpdate Agent (an .msu app).Other hex codeHow to tell which family an app deployment code belongs toWhat does the code look like? if 0x87D0 or 0x87D1: Configuration Manager client code (Use the client codes table; the client logs say which stage failed.); if Plain decimal: Is the exit code on the deployment type's Return Codes tab? if Yes: Handled as that return code type (Success, Soft Reboot, Hard Reboot, Fast Retry or Failure.); if No: Treated as an execution failure (If the vendor documents it as success, add it as Success (no reboot).); if Other hex code: Windows, COM, WMI or Windows Update code (0x80041 is WMI; 0x0024 and 0x8024 are Windows Update Agent (an .msu app).)What does the code look like?0x87D0 or 0x87D1NOTEConfiguration Manager client codeUse the client codes table; the client logs say whichstage failed.Plain decimalIs the exit code on the deployment type'sReturn Codes tab?YesNOTEHandled as that return code typeSuccess, Soft Reboot, Hard Reboot, Fast Retry orFailure.NoFIXTreated as an execution failureIf the vendor documents it as success, add it asSuccess (no reboot).Other hex codeNOTEWindows, COM, WMI or Windows Update code0x80041 is WMI; 0x0024 and 0x8024 are WindowsUpdate Agent (an .msu app).
Figure 1 · Decision tree How to tell which family an app deployment code belongs to. Start from the code's format to find the right table. Reports and SQL views store codes as signed decimals, so convert those to hex first.

You see the code in Software Center, in the console under Monitoring › Deployments (select the deployment, then View Status and the Error tab), and in the Microsoft Intune admin center for tenant-attached devices. The client logs in C:\Windows\CCM\Logs say which stage failed (walkthrough: AppDiscovery, AppEnforce and CAS logs).

  • 0x87D0xxxx and 0x87D1xxxx: Configuration Manager client codes.
  • Plain decimals such as 1603 or 3010: the installer's exit code, compared with the deployment type's return codes.
  • 0x8000…, 0x8004… and 0xC000…: Windows and COM codes; 0x80041…: WMI; 0x0024… and 0x8024…: Windows Update Agent, for an .msu deployed as an application.

Reports and SQL views store codes as signed decimals. Convert both ways in PowerShell:

PowerShell
'0x{0:X8}' -f -2016410844      # 0x87D00324
[int]0x87D00607                # -2016410105

Configuration Manager client codes#

Evaluation, policy and detection#

CodeMeaningUsual causeFirst check
0x87D00202Service is shutting downThe client service stopped or restarted during the actionThe SMS Agent Host service; CCMExec.log
0x87D00207, 0x87D00235, 0x87D00244Parsing error; Syntax error occurred while parsing; The object or subsystem has not been initializedInvalid data in a client component: something missing for the app, or an old package versionSearch the logs for the deployment type ID
0x87D00215Item not foundThe client can't find the deployment's policy or its contentPolicy retrieval, then the content status
0x87D0027C, 0x87D00289CI documents download timed out; Failed to decompress CI documentsThe client couldn't fetch or unpack the app's definitionsCIDownloader.log, CIAgent.log, DataTransferService.log
0x87D00314CI Version Info timed outThe app changed and the client lacks the new revisionPolicy retrieval (see policy not downloading)
0x87D00329Application requirement evaluation or detection failedA requirement, dependency or supersedence rule couldn't be evaluatedAppIntentEval.log
0x87D00324The application was not detected after installation completedThe installer succeeded but the detection method doesn't find the appAppDiscovery.log; test the rule as SYSTEM
0x87D00325Application was still detected after uninstall completedWrong uninstall command, or a rule that still matchesThe uninstall command in AppEnforce.log

Enforcement and run time#

CodeMeaningUsual causeFirst check
0x87D00213Timeout occurredThe installer ran past Maximum allowed run time (default 120 minutes), usually waiting for hidden inputTest the command silently as SYSTEM before raising the limit
0x87D00321The script execution has timed outA script in the deployment type ran too longAppEnforce.log; the run time and maintenance window
0x87D00327Script is not signedAn unsigned PowerShell script, blocked by the client's execution policy (Microsoft lists AllSigned as the default)Client Settings › Computer Agent › PowerShell execution policy, or sign it
0x87D00667No current or future service window exists to install software updatesThe run time is longer than any maintenance window on the deviceWindow length vs run time (see maintenance windows)
0x87D01106Failed to verify the executable file is valid or to construct the associated command lineA file missing from the content, or a .ps1 called directlyCall scripts through powershell.exe -File; check the content
0x87D103E8Error UnknownNo specific code was returnedAppEnforce.log and the installer's own log
0x87D1076CApplication was successfully installedA success result, not a failureNothing to fix

Content download#

CodeMeaningUsual causeFirst check
0x87D00607Content not foundNo distribution point the client may use has the contentContent Status; the client's boundary group
0x87D01107Failed to access all the provided program locations. This program may retry if the maximum retry count has not been reachedThe client got locations but can't reach themLocationServices.log, then ContentTransferManager.log and DataTransferService.log
0x87D01201The content download cannot be performed because there is not enough available space in cache or the disk is fullLow disk space or a full cacheFree space; ccmcache size against the client cache setting
0x87D01202The content download cannot be performed because the total size of the client cache is smaller than the size of the requested contentContent larger than the client cacheRaise Client Cache Settings in client settings
0x80091007The hash value is not correctContent changed or damaged, or another process (often security software) held the file during the hash checkCAS.log; redistribute; Process Monitor filtered on Sharing Violation
0x87D01281, 0x87D0128F, 0x87D01290A supported App-V client is not installed; The App-V sftmime command returned failure; An error occurred when querying the App-V WMI providerAn App-V deployment type on a device without a working, supported App-V clientThe App-V client on the device

Installer exit codes and return codes#

When the installer ends, AppEnforce.log looks up its exit code in the deployment type's Return Codes tab. Each code has a type:

  • Success (no reboot) and Failure (no reboot).
  • Soft Reboot: installed and requests a restart; other installs can run first. Hard Reboot: installed, but nothing else installs until the device restarts.
  • Fast Retry: another installation is running; the client retries every two hours, up to 10 times.

Windows Installer deployment types get 0 and 1707 (Success), 3010, 1641 and 1618 by default; Script Installer types get the same without 1707. Any other code is a failure:

Text
Looking for exit code 1603 in exit codes table...
Unmatched exit code (1603) is considered an execution failure.

If a vendor documents another code as success (some return 1), add it as Success (no reboot); values from -2147483648 to 2147483647 are allowed.

CodeMeaningUsual causeFirst check
0The action completed successfully. (default: Success)Installed; if detection then fails you get 0x87D00324The detection that follows in AppEnforce.log
3010A restart is required to complete the install. (default: Soft Reboot)Installed; a restart finishes the jobThe deployment's restart settings
1641The installer has initiated a restart. (default: Hard Reboot)The installer restarted, or will restart, the deviceREBOOT=ReallySuppress on MSI command lines
1618Another installation is already in progress. (default: Fast Retry)Another Windows Installer session is runningWhat else installs at the same time
1602The user canceled installation.The installer showed UI that someone closedMake it silent, or install for system
1603A fatal error occurred during installation.A custom action, prerequisite, pending restart or wrong contextA verbose log (/l*v); search for Return value 3
1605This action is only valid for products that are currently installed.An uninstall or repair names a product code that isn't installedThe product code in the command
1612The installation source for this product isn't available.Repair or patching needs the original MSI, gone from the cachePersist content in the client cache on the deployment type
1619This installation package couldn't be opened.The command names an MSI that isn't in the contentFile name and Installation start in
1625This installation is forbidden by system policy.Windows Installer or application control policy blocks itPolicies on the device
1633This installation package isn't supported on this platform.Processor architecture mismatchAn OS architecture requirement
1638Another version of this product is already installed.The MSI can't upgrade the installed versionRemove the old version first, or use supersedence
1639Invalid command line argument.A typo or bad quotes in switches or propertiesRun it from psexec -s -i cmd
1642The installer can't install the upgrade patch because the program being upgraded may be missing or the upgrade patch updates a different version of the program.An MSP for a version that isn't installedThe installed version

Windows, WMI and Windows Update codes#

CodeMeaningUsual causeFirst check
1Incorrect functionA script or installer returned 1, sometimes even for successThe vendor's exit codes; event logs
2The system cannot find the file specifiedA file in the command line isn't in the content or working folderCommand line against the content; Process Monitor
692Debugger terminated processA debugger was attached to the installer processDetach it and retry
0x80000009General access denied errorPermissions on a file or folder the installer touchesProcess Monitor; icacls
0x80004005Unspecified errorThe installer stopped without a specific codeMerge the installer and client logs around the failure
0x8000FFFFCatastrophic failureAn unexpected failure inside the installer or a componentEvent logs with the installer log
0x80040154Class not registeredA COM or DCOM registration problemdcomcnfg; regsvr32 the DLL
0xC0000142Initialization of the dynamic link library failed. The process is terminating abnormallyA DLL the installer loads failed to initializeregsvr32 the DLL
0x80041001WBEM_E_FAILEDA generic WMI failurewinmgmt /verifyrepository
0x80041009WBEM_E_NOT_AVAILABLEThe WMI resource, often a remote machine, isn't availableDevice online; wbemtest
0x00240006The update to be installed is already installed on the systemAn .msu app reaches a device that already has itThe detection method
0x80240017Operation was not performed because there are no applicable updatesThe update doesn't apply: wrong OS, or already supersededThe update's requirements, or deploy it as a software update

How to verify a fix#

Editing a deployment type creates a new revision. On a test device, run Machine Policy Retrieval & Evaluation Cycle, then Application Deployment Evaluation Cycle. Good looks like this:

  • AppEnforce.log shows Matched exit code 0 to a Success entry in exit codes table., and the detection that follows finds the app.
  • Software Center shows Installed; after Run Summarization, the device moves to Success in the deployment status.
  • WMI on the device agrees:
PowerShell
Get-CimInstance -Namespace root\ccm\ClientSDK -ClassName CCM_Application |
    Where-Object Name -like 'Contoso*' | Select-Object Name, InstallState, ErrorCode
# InstallState = Installed, ErrorCode = 0

References#

Written and checked against current Microsoft Learn documentation. Test changes with a pilot group before rolling them out to everyone, and if an admin center path has moved since, search for the setting name instead.

Spotted a mistake, or did this fix work differently for you? Email me or message me on LinkedIn — corrections are credited in the article.

Written by

Omer Eltayeb

Intune Subject Matter Expert in Cairo, Egypt, former Microsoft Cloud Solutions Architect, Microsoft Certified Trainer and Microsoft Innovative Educator Expert (2024–26) and Microsoft Elevate Educator Expert (2026–27). I share practical, step-by-step guides, study plans, scripts and toolkits for Microsoft Intune, Configuration Manager, Microsoft Entra ID, Microsoft Defender, Exchange and Microsoft 365 with the community.

Microsoft Certified Trainer (MCT) 2026Microsoft Innovative Educator Expert 2025–2026Microsoft Elevate Educator Expert 2026–2027ISC2 Certified Information Systems Security Professional (CISSP)Microsoft 365 Certified: Enterprise Administrator Expert (MS-102)