oeltayeb.com · Configuration Manager (SCCM) Toolkit

Checklist

Content distribution troubleshooting checklist

Based on the article: Content not reaching distribution points: distmgr.log, PkgXferMgr.log and validation · 5 min read

A deployment is only as good as its content: if a package never lands on the distribution point (DP) in a client's boundary group, the download sits at 0% in Software Center. Configuration Manager's content status tells you that something is wrong; three logs, distmgr.log and PkgXferMgr.log on the site server and smsdpprov.log on the DP, tell you what. In this post I'll follow content from the site server to a DP, cover the common failures, and explain when to update, redistribute or validate.

Symptoms to confirm

  • Monitoring › Distribution Status › Content Status shows a package In Progress for hours, or Error for one or more DPs.
  • Monitoring › Distribution Status › Distribution Point Configuration Status shows a DP with errors.
  • Clients in one location wait for content while other locations are fine.

Likely causes

Content moves in a fixed chain, and each link has its own log:

  • When you distribute or update content, Distribution Manager (SMS_DISTRIBUTION_MANAGER) on the site server processes the package, adds the source files to the site server's content library and starts a thread for each DP.
  • For a standard DP, Package Transfer Manager copies the files to the DP, then calls the DP's WMI provider to add them to the DP's content library (SCCMContentLib).
  • For a pull DP, Package Transfer Manager only notifies it, and the pull DP downloads from its source DP.
  • Status flows back to Distribution Manager (or arrives as a state message from the pull DP) and the console updates.
LogWhereLook for
distmgr.logSite server of the DP's site, <install path>\Logs~Processing package for your package ID, the DP thread and the transfer job
PkgXferMgr.logSame site serverFound send request with ID, then the sending thread's result
smsdpprov.logDP, SMS_DP$\sms\logsFiles added to the content library
PullDP.log, DataTransferService.logPull DPDownloads from the source DP
smsdpmon.logDPContent validation results

Checklist

  1. 1

    Pin down what's failing

    In Content Status, select the package and choose View Status; the In Progress and Error tabs list each DP with its latest message. Note the package ID. To list every unhealthy package and DP pair, run this on the SMS Provider (usually the site server):

    powershell
    Get-CimInstance -Namespace root\SMS\site_PS1 -ClassName SMS_PackageStatusDistPointsSummarizer -Filter 'State <> 0' |
      Select-Object PackageID, ServerNALPath, State
  2. 2

    Follow the package in distmgr.log

    Filter distmgr.log on the package ID, find the ~Processing package entry and then filter on that thread ID to see whether a DP thread and a transfer job were created. Typical findings:

    • Source errors: grant the site server's computer account read access to the share and folder, or fix the path.
    • A busy queue: ~Currently using 3 out of 3 allowed package processing threads. Watch the Package Processing Queue and Packages Being Processed values under HKLM\SOFTWARE\Microsoft\SMS\Components\SMS_DISTRIBUTION_MANAGER. If the queue moves slowly, raise Maximum number of packages in the Software Distribution site component properties. If it never moves, Distribution Manager may be stuck; Microsoft suggests capturing a dump of SMSExec.exe.
  3. 3

    Follow the transfer in PkgXferMgr.log

    Search for Found send request with ID, find the sending thread for your package and DP, and filter on it. Errors here are about reaching the DP: access denied (the site server's computer account must be a local administrator on the DP), network path not found, or RPC failures such as 0x800706BA. Test the same path from the site server over SMB and DCOM:

    powershell
    Test-NetConnection dp01.contoso.com -Port 445
    $s = New-CimSession -ComputerName dp01.contoso.com -SessionOption (New-CimSessionOption -Protocol Dcom)
    Get-CimInstance -CimSession $s -Namespace root\SCCMDP -ClassName SMS_PackagesInContLib | Select-Object -First 5
  4. 4

    Check the DP: smsdpprov.log and the content library

    On a standard DP, smsdpprov.log records each package being added to SCCMContentLib (its PkgLib, DataLib and FileLib folders). Common errors:

    • 0x80070070: not enough disk space. Free space or move content, and put a NO_SMS_ON_DRIVE.SMS file in the root of any drive Configuration Manager mustn't use.
    • 0x80070005: access denied. Check permissions on the content library drive and whether security software is interfering.
  5. 5

    Choose the right action

    ActionWhat it doesUse it when
    Update Distribution Points (packages) or Update Content (deployment types)Builds a new content version from the source and sends it to every DP that has the contentThe source files changed
    Redistribute (package Properties › Content Locations, or the Content tab of a DP or DP group)Recopies the current content from the site server's content library to the selected DP, overwriting existing filesOne DP failed or its copy is damaged
    Validate (Content Locations, or a schedule on the DP's Content Validation tab)Checks the hashes of the content on the DP and reports to Content Status; changes nothingYou suspect corruption or want proof
    Remove, then distribute againDeletes the content from the DP and sends it freshRedistribution keeps failing

    From the Configuration Manager PowerShell site drive:

    powershell
    Invoke-CMContentRedistribution -InputObject (Get-CMPackage -Id 'PS100012') -DistributionPointName 'dp01.contoso.com'
    Update-CMDistributionPoint -PackageName 'Contoso Tools'

Verify

  • PkgXferMgr.log shows the send finishing without errors, smsdpprov.log on the DP has no new errors, and distmgr.log processes the resulting status.
  • Content Status shows Success for the DP (status processing can take a few minutes).
  • Run Validate for that DP; Content Status and smsdpmon.log confirm it passed.
  • A client in that boundary group downloads the content: CAS.log and ContentTransferManager.log show the DP location and a completed download.

Prevent it next time

  • Schedule content validation on DPs so corruption shows up before clients find it.
  • Monitor DP free space and give the content library its own drive.
  • Never move or delete source folders for content that's still deployed.
  • Use DP groups, and rate limits, schedules or pull DPs for locations behind slow links.
  • Remove orphaned content with the content library cleanup tool (ContentLibraryCleanup.exe), which only reports unless you add /delete.

+1 more tips in the full article.

Microsoft Learn references