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.
| Log | Where | Look for |
|---|---|---|
distmgr.log | Site server of the DP's site, <install path>\Logs | ~Processing package for your package ID, the DP thread and the transfer job |
PkgXferMgr.log | Same site server | Found send request with ID, then the sending thread's result |
smsdpprov.log | DP, SMS_DP$\sms\logs | Files added to the content library |
PullDP.log, DataTransferService.log | Pull DP | Downloads from the source DP |
smsdpmon.log | DP | Content validation results |
Checklist
- 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):
powershellGet-CimInstance -Namespace root\SMS\site_PS1 -ClassName SMS_PackageStatusDistPointsSummarizer -Filter 'State <> 0' | Select-Object PackageID, ServerNALPath, State - 2
Follow the package in distmgr.log
Filter
distmgr.logon the package ID, find the~Processing packageentry 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 thePackage Processing QueueandPackages Being Processedvalues underHKLM\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 ofSMSExec.exe.
- 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 as0x800706BA. Test the same path from the site server over SMB and DCOM:powershellTest-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
Check the DP: smsdpprov.log and the content library
On a standard DP,
smsdpprov.logrecords each package being added toSCCMContentLib(itsPkgLib,DataLibandFileLibfolders). Common errors:0x80070070: not enough disk space. Free space or move content, and put aNO_SMS_ON_DRIVE.SMSfile 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
Choose the right action
Action What it does Use 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 content The 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 files One 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 nothing You suspect corruption or want proof Remove, then distribute again Deletes the content from the DP and sends it fresh Redistribution keeps failing From the Configuration Manager PowerShell site drive:
powershellInvoke-CMContentRedistribution -InputObject (Get-CMPackage -Id 'PS100012') -DistributionPointName 'dp01.contoso.com' Update-CMDistributionPoint -PackageName 'Contoso Tools'
Verify
PkgXferMgr.logshows the send finishing without errors,smsdpprov.logon the DP has no new errors, anddistmgr.logprocesses 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.logconfirm it passed. - A client in that boundary group downloads the content:
CAS.logandContentTransferManager.logshow 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.