SCCM Client Not Working on Some Systems After 2103 Upgrade

We recently upgraded to Microsoft Endpoint Configuration Manager (MECM) 2103 (aka SCCM 2103) and ran into an issue with the Client Upgrade on about 350 of our 3000+ servers.

When we do our upgrades we normally enable automatic client upgrades for Workstations, but for Servers we use a scheduled Software Deployment to do the upgrade. Most of our servers are Pull Distribution Points so those upgrade the client automatically when the pull DP upgrades, but we still had about 550 servers that needed the deployment.

After setting up the deployment and scheduling it for Friday night, by Sunday, 350 servers were still not showing the new client version which is not normal for us as we usually have a much higher success rate for this deployment.

Looking at the client logs, I could see that the clients ran the upgrade deployment and ccmsetup.log showed that it completed successfully, but something was clearly amiss. In the Configuration Manager applet, not all of the tabs were there and Actions only had 2 actions so the client wasn’t processing policies.

In the ccmexec.log I found the following errors:

System Task 'UpdatesDeploymentStartupTask' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'. 
System Task 'CoMgmt_Startup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.    
System Task 'CIStore_Startup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.    
System Task 'SettingsAgentStartup' is disabled due to absent or unsupported parent application 
System Task 'CTMStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.    
System Task 'SysPerfStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.    
System Task 'CcmEvalTaskStartup' is disabled due to absent or unsupported parent application
System Task 'DeltaDownloadServiceStartup' is disabled due to absent or unsupported parent application
System Task 'ClientIDManagerStartup' is disabled due to absent or unsupported parent application 'CCM_Framework'.
System Task 'MtrMgrStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'CIStateStore_Startup' is disabled due to absent or unsupported parent application
System Task 'LSMaintenance' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'EndpointProtectionAgentStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'StatusAgentStartup' is disabled due to absent or unsupported parent application 'CCM_Framework'.
System Task 'CcmCloudStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'. 
System Task 'CIAgent_Startup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'. 
System Task 'M365A_Startup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'CertEnrollAgentStartupTask' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'SensorStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'. 
System Task 'UserAffinityTaskStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'CertificateMaintenance' is disabled due to absent or unsupported parent application 'CCM_Framework'.
System Task 'CIDownloader_Startup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'FileBITSStartup' is disabled due to absent or unsupported parent application 'CCM_Framework'.
System Task 'ScanAgentStartupTask' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'CMBITSManagerStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'RebootCoordStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'SoftwareCatalogUpdateStartupTask' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'ComplRelayAgentStartupTask' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'WinPEBranchCacheStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'SrvWinMgrStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'BLM_Startup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'DCMAgent_Startup' is disabled due to absent or unsupported parent application
System Task 'SCStartUp' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'. 
System Task 'BgbAgentStartupTask' is disabled due to absent or unsupported parent application
System Task 'EEAStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.
System Task 'DTSStartup' is disabled due to absent or unsupported parent application 'CCM_Framework'.
System Task 'SrcUpdateStartup' is disabled due to absent or unsupported parent application
System Task 'ExecmgrStartup' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'. 
System Task 'PwrAgentStartupTask' is disabled due to absent or unsupported parent application 'ConfigMgr_Client'.

In my many years working with SCCM, I had never seen these errors before. Googling found NOTHING! Always great to be the first to run into something. 🙂

I tried removing the client and re-installing, but same issue. Completely removed the client, deleted ccmsetup folder, re-installed again, that worked on one system but not on another. Inconsistent results are never good when you have 350 systems to remediate! I tried re-pushing the client from the console both with and without the option to remove the client first. It would install but then ccmexec.log showed the same errors again.

I decided to check 2 things. First, of the 350, which ones are OFFLINE. See my post for Simple Ping Test to List of Computers for doing this. Next, I decided to cross reference my list with our list of Distribution Points to see if these were DPs or not.

SELECT ServerName, SMSSiteCode FROM v_DistributionPoints WHERE ServerName IN ('SERVER1', 'SERVER2', 'etc') ORDER BY ServerName

I had copied the list of the 350 systems from my Collection into Excel and then put the above SQL query results into the sheet too and did a vlookup to compare the lists. If you’re not good with vlookups, this is my favourite online tool for comparing two lists courtesy of MIT (Compare Two Lists).

Out of the 350, over 300 of them were NOT Distribution Points. But they used to be! We have a server refresh project going on and are replacing servers with new ones at many of our locations. As part of this process, the old DP gets deleted as a Site System from SCCM and of course, the DP role along with it. Turns out when you do this via the console, or the PS cmdlets, SCCM apparently doesn’t actually uninstall the Pull DP from the system even though it’s gone from the SCCM console and database. Do better Microsoft.

On one of the affected servers I ran an uninstall for <Drive>:\SMS_DP%\sms\bin\PullDP.msi. Once this completed, voila! The client on the server started working almost immediately, the errors went away, all of the tabs showed up in the Control Panel applet and the Actions tab was fully populated. The client ran its Discovery cycle and the object updated in my Collection to show the new client version.

Now, how do I repeat this on the remaining 299 systems? I did some searching and found this thread on StackOverflow and found the solution in 3 simple lines of code. I wrapped a ForEach loop around it and ended up with a script I could pass the list of target servers to.

$Servers = Get-Content -Path "$PSScriptRoot\Servers.txt"

ForEach ($Server in $Servers) {
    Write-Host "Processing server $Server. Removing PullDP…"
    $command = "msiexec.exe /X <Drive>:\SMS_DP$\sms\bin\PullDP.msi /qn /lv <Drive>:\PullDP_Uninstall.log"
    $ScriptBlock = [Scriptblock]::Create($command)
    Invoke-Command -ComputerName $Server -ScriptBlock $ScriptBlock
}

This worked like a charm to successfully remediate the clients.

You might be wondering about the other 50 not in the list. Most of those are new servers offline for shipping and a handful are having various other issues other than this issue.

Happy computing!

Leave a Comment