ConfigMgr Client Provisioning Mode

Update 3/15 - Ran several more tests to learn what actions are available to run during Provisioning mode.  Scroll to bottom for updates.

I’ve been doing a lot of testing with Provisioning Mode.  I needed to know what was going on when a system was in provisioning mode.

Quick Overview of what works and what is difference. (As I continue testing, I'll continue to update this list)

  1. Works Normally
    1. Software Center
      1. Lists all Deployments available & required it knew about before entering provisioning mode
      2. Can Install any of those by clicking "Install"
    2. ConfigMgr Control Panel
      1. You can still trigger actions, or change cache size
        1. By Triggering Actions, you can get deployments to install if they are past deadline
  2. Differences
    1. Policy doesn't update Automatically
    2. Does NOT report to CM (Inventory)
    3. Does NOT run Required Deployments automatically once deadline hits.


Basics: (Enter Provisioning Mode & Exit Commands) - More info HERE @

To Check Status: HKLM\SOFTWARE\Microsoft\CCM\CcmExec
Provisioning Mode: False (Not in Provisioning Mode)

Provisioning Mode: True (In Provisioning Mode)

In the CcmExec.log, once you tell the machine go into provisioning mode, you'll see it shutting down CCMEXEC and move into Provisioning Mode State, but it never actually says it's entering into provisioning mode.

Learned from Testing (while in Provisioning Mode)

  1. Client will not pull down any new CM Policies
    1. Provisioning mode has NO connection to Group Policy.  Group Policies still process while in Provisioning mode
  2. When a deployment reaches it’s deadline, it will change status to “Past Due” but does not start the installs.
    1. Tested with both Application Deployments & Software Updates.  Neither started installing when reached their deadlines, only Status changed from “Scheduled for XX Time” to “Past Due”
  3. When client is removed from Provisioning mode, machine policy is updated nearly immediately, and past due installations start ASAP.

When is the client set to Provisioning mode (When is it supposed to be)?   If it is in provisioning mode outside of these scenarios, it's probably an issue and you'll want to look into it

  1. During OSD, once the Client is installed, it is set to provisioning mode and stay in provisioning mode until the end of the TS. For context of how close to the end it is, it’s set after all of the steps in the TS, but right before the SMSTSPostAction
  2. In Place Upgrade
    1. Once the TS reaches “Upgrade Operating System” Step, it enters provisioning mode, and stops ccmexec service (Software Center closes if you still had that open) – It enters Provisioning Mode before the TS even downloads the Upgrade Media. unless you tell the TS to download all content before starting, this is a good reason to precache!
    2. After the upgrade process is complete, even if it fails like in my test, it will take the client back out of provisioning mode and restart the services.
  3. In Place Upgrade (Compat-Scan Only Mode)
    1. Identical process to Upgrade, even though it doesn’t actually upgrade.  This has been raised as a bug / uservoice item, and in a future release, the upgrade process, if running compat / scan only mode, it will not put the system into provisioning mode.


Issues I've run into with Provisioning Mode.  During CompatScan Only mode TS running, I've had users reboot the machine, leaving the machine in provisioning mode when it came back up.  While the window for this happening is small, 5 - 20 minutes, it has happened.  We have the CompatScan Only TS running in the background unknown to the users, so it's not really their fault if they reboot it during the process.  To work around this, I create a run once command to take a machine out of provisioning mode, if the process completes successfully, I delete the run once key as all is well, however, if the user does happen to reboot during the process, the next logon on, it will remove itself from provisioning mode thanks the turn run once key. (as shown in the twitter image of the TS Steps above)


Collection with Required Deployments: 2 apps & software updates.  Deadline for 6:30PM Client Time.

Machine is already in Provisioning Mode when Deployments are Created.  Results:  The Required Deployments never show up in the Software Center.

Deployments Created on Machine NOT in provisioning Mode, they show up in software Center with Deadline time. Then after the machine has the updated Policy, I placed it into Provisioning Mode.  Sorry, this machine is already patched, so it doesn't show any of the MS Updates, but I have confirmed on other tests that Software Updates also respect Provisioning Mode and do NOT install.

After the Deadline, "Nothing" happens.  Status changes from Scheduled... to Past Due, but the installs do NOT start.
So 2.5 hours past deadline, still no change.

Then I run command to take machine out of provisioning mode (which closes the software center).  I then reopen Software Center and see those two Apps are already installing.


So, provisioning mode, hopefully this helps demystify what it is, and the effects it has on the ConfigMgr client.

Update 3.15.2018

When Client is in provisioning Mode, you can trigger actions and the client will kick in and perform those actions.

Example Scenario. Client is set into provisioning mode, client has several deployments that reach their deadline, provisioning mode prevents those from running. UNLESS... a policy update is triggered.  From the ConfigMgr Console, if you right click a machine and tell it to run a Machine Policy Update, it will run and get that information, HOWEVER, it will NOT act on it, it only gets the policy.  If you have added deployments to that machine, it will NOT show up in software center, even if you run a machine policy update.
To trigger Applications or Software Updates to actually install while in provisioning Mode

  1. Right Click Machine -> Client Notification -> Trigger "Evaluate Application Deployments" (Application Model ONLY)
  2. Right Click Machine -> Client Notification -> Trigger "Evaluate Software Update Deployments" (Software Updates ONLY)

I was not able to trigger a package program using any of the built in Client Notifications.

Two ways to remove a client from Provisioning Mode Remotely using Configuration Manager

  1. Application
    1. Create Application
      1. No Content - Command Line =
        powershell.exe Invoke-WmiMethod -Namespace "root\ccm" -Class "SMS_Client" -Name "SetClientProvisioningMode" $false
      2. Detection Mode = Registry = HKLM\Software\Microsoft\CCM\CCMExec  provisioningmode = false
    2. Deploy to Collection with Machine
    3. Right Click Machine -> Client Notification -> Trigger "Download Machine Policy"
    4. Right Click Machine -> Client Notification -> Trigger "Evaluate Application Deployments
  2. Run Script
    1. Create new "Run Script" with same Command line as Application
    2. Right Click on Machine -> Run Script -> Choose the One you just created to remove machine from Provisioning Mode.

3 thoughts on “ConfigMgr Client Provisioning Mode

  • March 16, 2018 at 10:44 am

    Awesome article, Gary. When we were having a lot of trouble with Prov. mode sticking after OSD (back in cm2012 days), we created a step late in the TS that modified %windir%\ccmsetup\MobileClient.TCF, removing the line SMSPROVISIONINGMODE=1 if present. On a restart, this removed the computer from provisioning mode.
    I honestly like your wmi solution much better.
    Thanks so much for sharing all your research.

  • March 16, 2018 at 11:00 am

    A couple comments on the Application at the end of the article.
    If this is to be run as a command line, should it be the following?
    powershell.exe -command "Invoke-WmiMethod -Namespace "root\ccm" -Class "SMS_Client" -Name "SetClientProvisioningMode" $false"

    Note the $false instead of $true in your example.
    I hope I haven't got this backward.

    • March 16, 2018 at 11:10 am

      You are correct, you need to add powershell.exe in front of the command. I did not need the extra -command options when I ran my test. Updated post to reflect the command I used. Thanks!


Leave a Reply

Your email address will not be published. Required fields are marked *