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.
Subscribe to This Blog via Email
What are the Major Components Involved in 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.
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.
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.
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 Monitor – Deep 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 Details –Deep 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
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.
Once we complete the deployment window (on the SCCM Admin Console), we will notice a new entry in the SMS_ApplicationAssignment class. 6
SMS Database Monitor – Deep 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.
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.
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
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
- Introduction to Application Management in SCCM
- SCCM Inbox File Types Extensions and Associated Components
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
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?