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.
Errors this guide fixes
~Currently using 3 out of 3 allowed package processing threads.distmgr.log0x80070070smsdpprov.log (distribution point)0x800706BAPkgXferMgr.log+1 more guide0x80070005smsdpprov.log (distribution point)
Symptoms#
- 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.
Why it happens#
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 |
The usual causes: the site server's computer account can't read the source; the site server can't reach the DP (no local admin rights, SMB or RPC blocked); a full DP disk; a busy Distribution Manager; rate limits on a slow link; prestaged content not yet imported on the DP; or content that no longer matches its hashes.
How to fix it#
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):
Get-CimInstance -Namespace root\SMS\site_PS1 -ClassName SMS_PackageStatusDistPointsSummarizer -Filter 'State <> 0' |
Select-Object PackageID, ServerNALPath, StateState 0 means installed; 1 and 2 are pending or retrying, and 3 is failed.
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 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 as 0x800706BA. Test the same path from the site server over SMB and DCOM:
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 5If the last command returns packages, remote WMI to the DP's provider works.
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 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.
For a pull DP, read PullDP.log and DataTransferService.log instead; most failures there come from the pull DP failing to reach its source DP.
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:
Invoke-CMContentRedistribution -InputObject (Get-CMPackage -Id 'PS100012') -DistributionPointName 'dp01.contoso.com'
Update-CMDistributionPoint -PackageName 'Contoso Tools'Redistribution doesn't re-read the source. If the source changed or is broken, fix it and update instead.
Verify the fix#
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. - Content problems can look like client problems; rule out client health too.

