In System Center 2012 Configuration Manager (RTM und SP1) gibt es einen Bug, der verantwortlich dafür ist, daß im Software Center Applications nicht angezeigt werden, obwohl diese auf den Client zugewiesen sind.
Die Chance, von diesem Bug betroffen zu sein, ist meiner Meinung nach sehr gering. Ich selbst habe dies bisher nur in einer Umgebung gesehen, auf der über 1000 Applications auf einen Client zugewiesen sind. Laut Aussage eines Support Engineers von Microsoft gibt es aber einen weiteren Fall, bei dem dies “schon” bei 200 Applications aufgetreten ist. Ob die Anzahl der Deployments pro Client aber überhaupt eine Rolle spielt ist mir nicht bekannt. Außerdem ergaben Analysen von Microsoft, daß nur “high performance Clients” betroffen sind.
Wie erkannt man den Bug?
Direkt erst einmal gar nicht, d.h. man sieht client- und serverseitig erst einmal keine Fehlermeldung oder ähnliches. Ein Symptom ist, daß eine zugewiesene Applikation einfach nicht im Software Center angezeigt wird.
Für ein weiteres Troubleshooting kann das Deployment Monitoring Tool aus dem “System Center 2012 Configuration Manager Service Pack 1 Component Add-ons and Extensions” verwendet werden. Dieses listet zwar alle Applications, bei einem Klick auf eine betroffene Application bekommt man aber die Fehlermeldung “DT cannot be empty” und das Tool stürzt ab:

Entsprechend war es naheliegend, einen Automatismus zu verwenden, der die betroffenen Clients ermitteln kann.
Ich habe mich für eine Configuration Baseline mit einem Configuration Item (ehemals “DCM” / Desired Configuration Management) entschieden.
Das CI verwendet dazu ein Powershell-Skript (Powershell Version 3.0 erforderlich!) um die fehlenden DTs (Deployment Types) zu ermitteln:

$ErrorActionPreference = "Stop"
$PSvers = $host.Version
if($PSvers.Major -lt 3)
{
Write-Host "Please install WMF 3.0 (kb2506143)."
write-host "Quit (255)"
exit 255
}
[int]$countMissingDTs = 0
try
{
$Applications = gwmi -namespace root\ccm\clientsdk -query "select * from ccm_application"
}
catch
{
exit 1
}
$AppsTotal = $Applications.Length
foreach($App in $Applications)
{
$AppDT = [wmi] $App.__Path
if($AppDT.AppDTs.Name.Length -eq 0)
{
$countMissingDTs = $countMissingDTs + 1
}
}
$countMissingDTs
Ich bin kein Powershell-Profi und konnte das Skript auch nur begrenzt testen, entsprechend ist es nur als Anregung für weitere Verbesserungen zu sehen 
Die Idee ist aber, die fehlenden DeploymentTypes (DT) zu ermitteln, diese zu summieren und am Ende des Skripts auszugeben.
Wenn kein DT fehlt, dann ist die Ausgabe 0 ($countMissingDTs) und der Rechner als “compliant” anzusehen. Ist die Ausgabe größer 0, so wird der Rechner als “non-compliant” angesehen:

Als Ergebnis erhält man dann entsprechend alle Clients, die von dem Problem betroffen bzw nicht betroffen sind:

Bei den betroffenen Clients entsprechend dann sogar mit Ausgabe der Anzahl der fehlenden Applications (in diesem Beispiel 5):

Als “Lösung” für das Problem gibt es ein vbs-Skript (Quelle: Microsoft Support), welches auf den betroffenen Clients auszuführen ist.
Hier ist ebenfalls ein Automatismus denkbar. Die betroffenen Clients wurden per DCM/Compliance identifiziert, können entsprechend in einer Collection gruppiert und das Skript als Package/Program advertised werden.
'Trigger DCM Schedules for Applications
Dim objWMI_MachinePolicy
Dim query, AppCIAssignments
'Connect to WMI
Set objWMI_MachinePolicy = GetObject("wInmgmts:\\.\root\ccm\Policy\Machine")
query=("select * from CCM_ApplicationCIAssignment")
Set AppCIAssignments=objWMI_MachinePolicy.ExecQuery(query)
For Each AppCIAssignment in AppCIAssignments
'MsgBox "Starting schedule for " & AppCIAssignment.AssignmentID
RunSchedule(AppCIAssignment.AssignmentId)
WScript.Sleep 500
Next
Set objWMI_MachinePolicy=Nothing
'--------------------
'Function RunSchedule
'
'Purpose: Connects to WMI and triggers the supplied schedule.
'
'--------------------
Function RunSchedule (ScheduleMessageId)
Dim objWMI_RunSchedule
'Connect to WMI
Set objWMIService = GetObject("winmgmts:\\.\root\ccm:SMS_Client")
objWMIService.TriggerSchedule(ScheduleMessageId)
Set objWMIService=Nothing
End Function
(Hinweis: dieser Blog-Artikel stellt keine fertige End-to-End-Lösung dar. Es soll nur prinzipiell gezeigt werden, wie ein ConfigMgr-Problem identifiziert und gelöst werden kann. Skript-Anpassungen können pro Umgebung ggfs. nötig sein.)