Deep Dive SCCM Application Model Troubleshooting

In this post, you will explore the Deep Dive SCCM Application Model Troubleshooting. The Application Model is now extensively used for Software Distribution from SCCM.

However, troubleshooting Application deployment using this model is not easy due to the number of components involved.

This post aims to help you understand the various components involved in creating an application on the SCCM console.

In this post, I will explain how control is passed from one component to another and troubleshoot server-side issues that may arise during the creation and deployment of newly created applications.

Patch My PC
Index
SCCM Application Model Troubleshooting
SMS Admin UI – Deep Dive SCCM Application Model Troubleshooting
SMS Provider
SMS Database Monitor – Deep Dive SCCM Application Model Troubleshooting
SQL Query CI Details -Deep Dive SCCM Application Model Troubleshooting
Distribution Components
Application Deployment – SCCM Application Model Troubleshooting
SMS Admin UI
SMS Database Monitor – Deep Dive SCCM Application Model Troubleshooting
PolicyPV.box
ObjReplMgr (Object Replication Manager)
Policy Details – SQL DB
Deep Dive SCCM Application Model Troubleshooting – Table.1

Subscribe to This Blog via Email

[jetpack_subscription_form show_only_email_and_button=”true” custom_background_button_color=”undefined” custom_text_button_color=”undefined” submit_button_text=”Subscribe” submit_button_classes=”undefined” show_subscribers_total=”true” ]

What are the Major Components Involved in SCCM Application Model Troubleshooting?

Deep Dive SCCM Application Model Troubleshooting

SCCM application deployment troubleshooting on the client side requires attention to detail. The following are the major components involved in SCCM Application Model Troubleshooting.

Adaptiva

1. SMS Admin UI
2. SMS Provider
3. SMS Database Monitor
4. Hierarchy Manager
5. Object Repl Mgr
6. Collection Evaluator
7. Policy PV
8. MP Policy Manager
9. CCM Messaging

10. Policy Agent

SCCM Application Model Troubleshooting

To discuss the above-mentioned components in detail, let us create a sample application, say “Notepad++.” I have not included steps for creating this Application as the intention of this post is to understand the background process.

Deep Dive SCCM Application Model Troubleshooting - Fig.1
Deep Dive SCCM Application Model Troubleshooting – Fig.1
Deep Dive SCCM Application Model Troubleshooting - Fig.2
Deep Dive SCCM Application Model Troubleshooting – Fig.2

SMS Admin UI Deep Dive SCCM Application Model Troubleshooting

This component captures all the activity done on the SCCM Console-like the creation of an application, collection, deployment, etc. The location of the log file associated with this component is

<OS Drive>\Program Files (x86)\Microsoft Configuration Manager\AdminUILog\SMSAdminUI.log. 

SMS Provider

This component connects the SCCM Admin Console and the SCCM database. The SMS provider translates the configuration created on the console from WQL to SQL queries.

When an Application is created below, the SMS Provider updates WMI classes.

  • SMS_Application
  • SMS_ApplicationTechnology

Connect to Root\SMS\Site_<site code> namespace of the WMI on the site server and check the new entries added in the above classes. We can observe that a new instance in the SMS_Application class is being created, and fields like CI_ID, CI_UniqueID, LocalizedDisplayName, etc., are populated with Application details.

Deep Dive SCCM Application Model Troubleshooting - Fig.3
Deep Dive SCCM Application Model Troubleshooting – Fig.3
Deep Dive SCCM Application Model Troubleshooting - Fig.4
Deep Dive SCCM Application Model Troubleshooting – Fig.4
Deep Dive SCCM Application Model Troubleshooting - Fig.5
Deep Dive SCCM Application Model Troubleshooting – Fig.5

Smsprov.log located at <Install Path>\Logs or SMS_CCM\Logs folder will show the following details.

ExecQueryAsync: START select CI_ID from SMS_Application where IsLatest=1 and IsHidden=0 and LocalizedDisplayName='Notepad++' SMS Provider 
Adding Handle 60808272 to async call map SMS Provider 
IExtClassManager::ValidateAuthenticationLevel... SMS Provider 
CExtProviderClassObject::DoCreateInstanceEnumAsync (SMS_Application) SMS Provider 
CSspQueryForObject :: Execute... SMS Provider 
Execute WQL  =select CI_ID from SMS_Application where IsLatest=1 and IsHidden=0 and LocalizedDisplayName='Notepad++' SMS Provider 
Execute SQL =select  all SMS_Application.CI_ID from fn_ListApplicationCIs_List(1033) AS SMS_Application  where ((SMS_Application.IsLatest = 1 AND SMS_Application.IsHidden = 0) AND SMS_Application.DisplayName = N'Notepad++') SMS Provider 
Results returned : 0 of 1 SMS Provider 
Removing Handle 60808272 from async call map SMS Provider 
ExecQueryAsync: COMPLETE select CI_ID from SMS_Application where IsLatest=1 and IsHidden=0 and LocalizedDisplayName='Notepad++' SMS Provider 
Execute WQL  =SELECT CI_ID, ModelName FROM SMS_ApplicationTechnology WHERE CIType_ID = 25 AND IsLatest = 1 SMS Provider 
Execute SQL =select  all SMS_ApplicationTechnology.CI_ID,SMS_ApplicationTechnology.ModelName from fn_ListAppTechnologyCIs(1033) AS SMS_ApplicationTechnology  where (SMS_ApplicationTechnology.CIType_ID = 25 AND SMS_ApplicationTechnology.IsLatest = 1) SMS Provider 
.
.
Added Content 631 to package : 'TTT0000D'. SMS Provider 

DoCreateInstanceEnumAsync (highlighted above) creates a new instance in a WMI class, in this case, SMS_Application.

The configuration item (CI) 1369 in the SMS_Application class represents the Application we created.

We can also notice that WQL queries are converted to SQL queries after this handle is passed to the SMS Database Monitor.

SMS Database MonitorDeep Dive SCCM Application Model Troubleshooting

The role of this component is to monitor the changes in key tables of the database and take necessary action.

In the log snip below, we can observe that database tables containing Application CI information have been updated, and notifications are sent to the objmgr, hman, and distmgr components to take further action.

The following tables will be updated.

  • CI_ConfigurationItems
  • CI_ConfigurationItemsRelations_Flat
  • RBAC_ChangeNotification
RCV: UPDATE on CI_ConfigurationItems for CINotify_iud [1369  ][7322]   SMS_DATABASE_NOTIFICATION_MONITOR                                     RCV: UPDATE on CI_ConfigurationItems for CINotify_iud [1370  ][7347]   SMS_DATABASE_NOTIFICATION_MONITOR                
SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\objmgr.box\1369.CIN  [7322]                SMS_DATABASE_NOTIFICATION_MONITOR                                    SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\objmgr.box\1370.CIN  [7330]                SMS_DATABASE_NOTIFICATION_MONITOR         
RCV: INSERT on CI_ConfigurationItemRelations_Flat for CI_ConfigurationItemRelations_Flat_From_iud [1373  ][7326]                SMS_DATABASE_NOTIFICATION_MONITOR                                            RCV: INSERT on CI_ConfigurationItemRelations_Flat for CI_ConfigurationItemRelations_Flat_From_iud [1374  ][7327]                SMS_DATABASE_NOTIFICATION_MONITOR         
Modified trigger definition for Object Replication Manager[CINotify_iud]: table CI_ConfigurationItems(CI_ID) on insert,update, file CIN in dir C:\Program Files\Microsoft Configuration Manager\inboxes\objmgr.box\                SMS_DATABASE_NOTIFICATION_MONITOR                                                                             SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\hman.box\493.RBC  [7103] 

Below are details of the notification files dropped by SMS DB Mon.

  • CIN File: This file is dropped in Objmgr.box (\inboxes\objmgr.box\<CI_ID>.CIN). This file triggers Object Replication Manager to process new applications.
  • RBC File: This file is dropped in hman.box (inboxes\hman.box\*.RBC). This file triggers Hierarchy Manager to process RBAC permissions for a new application.
  • PKN File: This file is dropped in distmgr.box (inboxes\distmgr.box\<Pkg_ID>.PKN). This will trigger the Distribution Manager to process the newly created application.

SQL Query CI DetailsDeep Dive SCCM Application Model Troubleshooting

If you want to get further details for the CI’s created earlier, run the following SQL select query after connecting to the database.

Select * from CI_ConfigurationItems where CI_ID in (‘1369’, ‘1370’,
‘1371’, ‘1372’); here 1369-1372 were the CI's created for the notepad++ application
Deep Dive SCCM Application Model Troubleshooting - Fig.6
Deep Dive SCCM Application Model Troubleshooting – Fig.6

Click on SDMPackageDigest to view CI details in XML format. The version listed in the CIVersion tab will be updated when you change/edit the Application.

Now let us distribute this Application to a distribution point and study what changes happen in the background. The SMS Database Monitor component sends a notification to the Distribution Manager to start the distribution using the “<Pkg_ID>.PKN” file. We will see the following in SMSDBMon.log.

SND: Dropped C:\Program
Files\Microsoft Configuration Manager\inboxes\distmgr.box\TTT0000D.PKN  [7393] SMS_DATABASE_NOTIFICATION_MONITOR

The Distribution Manager monitors the inbox for such notifications and will start processing the new application distribution once. The PKN file is dropped. We will observe the same in Distmgr.log.

Started package processing thread for package 'TTT0000D', thread ID = 0x335C (13148)    SMS_DISTRIBUTION_MANAGER    

Sleeping for 60 minutes before content cleanup task starts.    SMS_DISTRIBUTION_MANAGER    

Sleep 3600 seconds…    SMS_DISTRIBUTION_MANAGER    

STATMSG: ID=2300 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=1702-CAS.QA.COM SITE=TTT PID=13616 TID=13148 GMTDATE=Sat Nov 18 21:02:12.644 2017 ISTR0="Notepad++" ISTR1="TTT0000D" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=400 AVAL0="TTT0000D"    SMS_DISTRIBUTION_MANAGER    

Processing package TTT0000D (SourceVersion:1;StoredVersion:1)    SMS_DISTRIBUTION_MANAGER    

No action specified for the package TTT0000D, however there may be package server changes for this package.    SMS_DISTRIBUTION_MANAGER    

All DP threads have completed for package TTT0000D processing thread.    SMS_DISTRIBUTION_MANAGER    

Package TTT0000D does not have a preferred sender.    SMS_DISTRIBUTION_MANAGER    

STATMSG: ID=2333 SEV=I LEV=M SOURCE="SMS Server" COMP="SMS_DISTRIBUTION_MANAGER" SYS=1702-CAS.QA.COM SITE=TTT PID=13616 TID=13148 GMTDATE=Sat Nov 18 21:02:13.449 2017 ISTR0="TTT0000D" ISTR1="PPP" ISTR2="" ISTR3="" ISTR4="" ISTR5="" ISTR6="" ISTR7="" ISTR8="" ISTR9="" NUMATTRS=1 AID0=400 AVAL0="TTT0000D"    SMS_DISTRIBUTION_MANAGER    

Needs to send the compressed package for package TTT0000D to site PPP    SMS_DISTRIBUTION_MANAGER    

Sending a copy of package TTT0000D to site PPP    SMS_DISTRIBUTION_MANAGER

Here, TTT0000D is the package ID. Every application has an associated package ID for its content. The compressed copy of the content is sent to the destination site using the legacy file distribution method in SCCM.

Distribution Components

Below listed components are involved in the distribution of content.

  • Distribution Manager
  • Replmgr
  • Scheduler
  • Sender
  • Despooler
  • Status Message

The distribution manager creates the compressed copy of the content and notifies Replmgr, triggering the Scheduler component to schedule the sending job.

The sender is the component that polls the schedule set by the Scheduler and connects to the destination site to send the actual data.

On the destination site, the data is received by Despooler, and it extracts the compressed data. The instruction for extraction, reach the destination via DRS (that’s why the package distribution is stuck if the DRS is not working).

Once the instruction for extraction is received, the package is extracted and added to the content library.

Then, the status message is sent to the sending site, which is an acknowledgement of distribution completion.

Application Deployment – SCCM Application Model Troubleshooting

We have learned the background dynamics for the creation and distribution of the Application. Now we will focus on the deployment, both machine and user-based.

Once you deploy an application to a user or a machine-based collection, policies are then mapped to the PADBID (machine or user ID). Below are the major components involved in the creation and mapping of deployments.

  • SMS Admin UI
  • SMS Database Monitor
  • HMan (Hierarchy Manager)
  • Object Repl Mgr
  • Collection Eval
  • Policy Provider

SMS Admin UI

We have deployed our Application to all user collections as an available deployment for reference.

Deep Dive SCCM Application Model Troubleshooting - Fig.7
Deep Dive SCCM Application Model Troubleshooting – Fig.7
Deep Dive SCCM Application Model Troubleshooting - Fig.8
Deep Dive SCCM Application Model Troubleshooting – Fig.8

Once we complete the deployment window (on the SCCM Admin Console), we will notice a new entry in the SMS_ApplicationAssignment class. 6

Deep Dive SCCM Application Model Troubleshooting - Fig.9
Deep Dive SCCM Application Model Troubleshooting – Fig.9

SMS Database MonitorDeep Dive SCCM Application Model Troubleshooting

SMS DB Mon will now be triggered as it monitors database changes. It will perform the following major jobs.

  • Insert Data in CI_AssignmentTargetedCIs
  • Send notification PolicyPV to create a policy
  • Notifies HMan of setting up RBAC
  • Send notification to Objreplmgr

Below is the snip from SMSDBMon.log performing these tasks.

RCV: INSERT on CI_CIAssignments for CIAssignmentNotify_iu [2  ][12569]    SMS_DATABASE_NOTIFICATION_MONITOR   
 RCV: INSERT on CrpChange_Notify for CrpChange_Notify_ins [3  ][12570]    SMS_DATABASE_NOTIFICATION_MONITOR   
 RCV: INSERT on PfxAssignment_Notify for PfxAssignment_Notify [3  ][12571]    SMS_DATABASE_NOTIFICATION_MONITOR   
 RCV: INSERT on RBAC_ChangeNotification for Rbac_Sync_ChangeNotification [232  ][12572]    SMS_DATABASE_NOTIFICATION_MONITOR   
 RCV: INSERT on RBAC_ChangeNotification for Rbac_Sync_ChangeNotification [233  ][12573]    SMS_DATABASE_NOTIFICATION_MONITOR   
 RCV: INSERT on CI_AssignmentTargetedCIs for CI_AssignmentTargetedCIs_CIAMGR [2  ][12574]    SMS_DATABASE_NOTIFICATION_MONITOR    
SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\policypv.box\policytargeteval\3.CRP  [12570]    SMS_DATABASE_NOTIFICATION_MONITOR   
 SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\policypv.box\policytargeteval\3.PFXCREATE  [12571]    SMS_DATABASE_NOTIFICATION_MONITOR   
 SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\hman.box\232.RBC  [12572]    SMS_DATABASE_NOTIFICATION_MONITOR   
 SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\hman.box\233.RBC  [12573]    SMS_DATABASE_NOTIFICATION_MONITOR   
 SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\objmgr.box\2.CIA  [12574]    SMS_DATABASE_NOTIFICATION_MONITOR

PolicyPV.box

We have noticed that a CRP file is dropped in the PolicyPV box to create the deployment policy.

These notification files are processed almost immediately, so I have to stop this component (which is not recommended) from checking the actual file.

Deep Dive SCCM Application Model Troubleshooting - Fig.10
Deep Dive SCCM Application Model Troubleshooting – Fig.10

Below is the snip from Policypv.log, which mentions processing these notification files and updating the “ResPolicyMap” table with new policy details.

File notification triggered.    SMS_POLICY_PROVIDER 
Found 3.CRP    SMS_POLICY_PROVIDER 
Adding to delete list: C:\Program Files\Microsoft Configuration Manager\inboxes\policypv.box\policytargeteval\3.CRP    SMS_POLICY_PROVIDER 
File notification triggered.    SMS_POLICY_PROVIDER 
File notification triggered.    SMS_POLICY_PROVIDER 
Found 3.PFXCREATE    SMS_POLICY_PROVIDER 
Adding to delete list: C:\Program Files\Microsoft Configuration Manager\inboxes\policypv.box\policytargeteval\3.PFXCREATE    SMS_POLICY_PROVIDER 
Building Collection Change List from Collection Change Notification files    SMS_POLICY_PROVIDER 
--Process Collection Member Changes    SMS_POLICY_PROVIDER 
Building Collection Change List from Collection Member Notification files    SMS_POLICY_PROVIDER 
--Trying to update effective group    SMS_POLICY_PROVIDER 
-UpdateMDMUserTargetingForUser    SMS_POLICY_PROVIDER 
Start Update MDM User Targeting For User    SMS_POLICY_PROVIDER 
--UpdatePolicyMapForPA    SMS_POLICY_PROVIDER 
Processing any pending PolicyAssignmentChg_Notify    SMS_POLICY_PROVIDER 
Found 16777389.PAC    SMS_POLICY_PROVIDER 
Adding to delete list: C:\Program Files\Microsoft Configuration Manager\inboxes\policypv.box\policytargeteval\16777389.PAC    SMS_POLICY_PROVIDER 
File notification triggered.    SMS_POLICY_PROVIDER 
Updating ResPolicyMap    SMS_POLICY_PROVIDER 
Completed batch with beginning PADBID = 16777389 ending PADBID = 16777390.    SMS_POLICY_PROVIDER

Before the newly created policy is mapped to a user or a machine, the collection on which the deployment is targeted is checked for any incremental update to its membership. Below is the log snip from colleval.log.

PF: Collection process starts    SMS_COLLECTION_EVALUATOR    
PF: Looking for candidates for incremental evaluation    SMS_COLLECTION_EVALUATOR    
SQL MESSAGE: spCollBeginIncEvaluation - @NCollections = 10,   @NMachines = 0    SMS_COLLECTION_EVALUATOR    
Querying for incremental changes    SMS_COLLECTION_EVALUATOR    
SQL MESSAGE: spCollBeginIncEvaluation - Originating collection number = 0    SMS_COLLECTION_EVALUATOR    
PF: Found 0 candidate collection for incremental evaluation    SMS_COLLECTION_EVALUATOR    
Checking for collections needing their extended user membership updated.    SMS_COLLECTION_EVALUATOR

ObjReplMgr (Object Replication Manager)

Finally, the ObjReplMgr component completes mapping the policy and application CIs to the padding bit of the user or the machine. We can observe this in objreplmgr.log.

Deep Dive SCCM Application Model Troubleshooting - Fig.11
Deep Dive SCCM Application Model Troubleshooting – Fig.11
File notification triggered.    SMS_OBJECT_REPLICATION_MANAGER  
+++Begin processing changed CIA objects    SMS_OBJECT_REPLICATION_MANAGER  
Processing Application Assignment {4C9BC381-985B-4753-B694-11A358CD0CA6}     SMS_OBJECT_REPLICATION_MANAGER  
Deleting notification file C:\Program Files\Microsoft Configuration Manager\inboxes\objmgr.box\2.CIA    SMS_OBJECT_REPLICATION_MANAGER  
No file trigger for C:\Program Files\Microsoft Configuration Manager\inboxes\objmgr.box\2.ADD - status 2    SMS_OBJECT_REPLICATION_MANAGER  
Info: Unable to get New CI Added notification file 2.ADD for CI Assignment Id 2 from objmgr inbox, no new CI added to this assignment    SMS_OBJECT_REPLICATION_MANAGER  
CI Assignment {4C9BC381-985B-4753-B694-11A358CD0CA6} has 1 Targeted CI(s)    SMS_OBJECT_REPLICATION_MANAGER  
PolicyID {4C9BC381-985B-4753-B694-11A358CD0CA6} PolicyVersion 1.00 PolicyHash SHA256:09052973FE1EB9EBCCDA1C500FA993A61A441D4608726BB62C5B79BA5A88EE65    SMS_OBJECT_REPLICATION_MANAGER  
Notifying policy provider about changes in policy content/targeting    SMS_OBJECT_REPLICATION_MANAGER  
Successfully created policy for CI Assignment {4C9BC381-985B-4753-B694-11A358CD0CA6}    SMS_OBJECT_REPLICATION_MANAGER  
PolicyID {4C9BC381-985B-4753-B694-11A358CD0CA6}/RunOnce PolicyVersion 1.00 PolicyHash SHA256:870BC3FD9EA71569811DA676B1788C4E74214359DA1E7AFD527420EE9490C206    SMS_OBJECT_REPLICATION_MANAGER  
Notifying policy provider about changes in policy content/targeting    SMS_OBJECT_REPLICATION_MANAGER  
Successfully created BGB policy for CI Assignment {4C9BC381-985B-4753-B694-11A358CD0CA6}    SMS_OBJECT_REPLICATION_MANAGER  
Catalog evaluation: Getting model id for CI Assignment ID = 2    SMS_OBJECT_REPLICATION_MANAGER  
Catalog table insert/update evaluation for Model Id 1373

Policy Details – SQL DB

Below are the SCCM DB tables, which you can refer to validate the pad bid policy association. I have also added snips for reference.

  • Policy: This table contains the Policy ID details
  • PolicyAssignment: This table has the policy and pad bid columns
  • PolicyCollMapFlat: This table has pad bid and collection ID details
Deep Dive SCCM Application Model Troubleshooting - Fig.12
Deep Dive SCCM Application Model Troubleshooting – Fig.12
Deep Dive SCCM Application Model Troubleshooting - Fig.13
Deep Dive SCCM Application Model Troubleshooting – Fig.13
Deep Dive SCCM Application Model Troubleshooting - Fig.14
Deep Dive SCCM Application Model Troubleshooting – Fig.14

So this completes the server-side process to create, distribute and deploy an application from SCCM. In the next post, I will cover the application installation on the client machines.

Resources

We are on WhatsApp. To get the latest step-by-step guides and news updates, Join our Channel. Click here –HTMD WhatsApp.

Author

Nitin Chhabra worked as a Microsoft support engineer specializing in SCCM Application Deployment technology for several years. He is an SME in Application deployment, Software Update deployment, and OSD

1 thought on “Deep Dive SCCM Application Model Troubleshooting”

  1. Hello,

    This is a great write-up. I’m using this information to troubleshoot an issue in my CM Environment. I’m on version 2203. The issue I’m facing is that new software deployments to user collections are taking up to 24 hours to be visible in Software Center. Using this guide everything is processing correctly and I’m seeing everything you mentioned above (Logs, WMI, SQL, etc.) but still the applications are not visible for quite some time. Do you have any suggestions on where I might look next?

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.