ConfigMgr 2007, USMT 4.0 and using Hard-Links

One of the coolest new functions of USMT 4.0 is the new hard-link migration store (only for computer-refresh scenarios). These migration stores are stored locally on the computer that is being refreshed and can migrate user accounts, files and settings. This way it will save time and space during a computer-refresh (and you do not need a State Migration Point!). HardLinkTS

When you create a default Task Sequence it will create the steps Request User State Storage and Release User State Storage. These steps are needed to interact with the State Migration Point (SMP) to get available space and to tell that the action completed successfully. So these steps are not needed anymore when you are using hard-links! This is why these steps are grayed out in the picture. Instead we need to define three variables:

  1. OSDStateStorePath: Defines the path to the user state store. This path must be on a local drive. As path I use the value:    %_SMSTSUserStatePath%. This Task Sequence Variable must be set before the step: Capture User Files and Settings.
  2. OSDMigrateAdditionalCaptureOptions: Specifies the extra options needed to perform a hard-link migration capture and must include /nocompress /hardlink. This Task Sequence Variable must be set before the step: Capture User Files and Settings.
  3. OSDMigrateAdditionalRestoreOptions: Specifies the extra options needed to perform a hard-link migration restore and must include /nocompress /hardlink. This Task Sequence Variable must be set before the step: Restore User Files and Settings.

The picture with this post shows a plain and simple example about how a Task Sequence could look with hard-links enabled. In the red rectangles I created my Task Sequence Variables and the still needed steps of Capture User Files and Settings and Restore User Files and Settings. Because I still use these default ConfigMgr 2007 steps it is not possible to run the capture in WinPE.

More information about USMT 4.0:
More information about USMT 4.0 Hard-Link Migration:
More information about How to use Hard-Links for User State Migration:

Copy logs from a failed Task Sequence in ConfigMgr 2007

I like to do multiple things at a time… So I don’t like to wait on my Task Sequence, after I made a a few changes, to see if it doesn’t fail. This is why I searched for some sort of error catching in a Task Sequence. During this search I found this great article of Steve Raichu:

In this article he explains the following important steps that are needed for an automatic error catching:

  1. Use a top group in a Task Sequence that is set to Continue on error. The rest of your functioning Task Sequence has to be added under this group. In this way the Task Sequence will continue to the following group if a part of the Task Sequence has failed.
  2. Use a Error Catching group that is set to run when _SMSTSLastActionSucceeded equals FALSE. This group will only start when the top group has failed.

These steps are the most important. After these steps you can pick your own way in what to do during the Error Catching group. In my Error Catching group I use the following two steps:

  1. Connect to Network Folder: In this step I create a connection with a Network Share.
  2. Run Command Line: In this step I start a script which is located on the Network Share that I connected in the previous step. This script looks like this:

Set fso = CreateObject("Scripting.FileSystemObject")
Set env = CreateObject("Microsoft.SMS.TSEnvironment")

dim logPath
dim errorLogPath
dim machineName

logPath = env("_SMSTSLogPath")
machineName = env("_SMSTSMachineName")
errorLogPath = "Z:\LOGS\" & machineName

If fso.folderExists(errorLogPath) then
    fso.DeleteFolder errorLogPath, True
End If

fso.CopyFile logPath & "\" & "*.*", errorLogPath, True

This script copies the logs from the Task Sequence Log Path to a folder, on the network share, that has the name of the machine. If the folder already exists then it will be deleted first.

Remote Distribution Points in ConfigMgr 2007

This post will be a short follow-up on a previous post about How a client chooses a Distribution Point. In that post I tried to explain how a client picks a (Remote) Distribution Point (DP). In this post I will try to take away some more confusion about Remote DP’s.

Let’s start with when a DP is considered a Remote DP. ConfigMgr looks at this from the clients perspective. If a client is within a Fast Network Boundary, then the DP(‘s) that is in the same Boundary will be marked as a Local DP. All the other DP’s are marked as Remote DP’s. The important part here is that a client has to be within the correct Boundary and that you are the only one who can make that happen. To make sure which DP is used to download, you have to make the DP Protected with that Boundary.

So if a client is on a remote location, doesn’t mean that it connects to the DP on the remote location. As long as you don’t configure a Boundary for the client, the client will see the DP on its own location as a Remote DP.

For more information about protected DP’s:

How to create a Capture Only Task Sequence with ConfigMgr 2007

Some things are a lot easier then you might think. One of these things is creating a Capture Only Task Sequence. As you all know there is the option within ConfigMgr 2007 to create a Build and Capture Task Sequence, well creating a Capture Only Task Sequence is nothing more then taking the Capture part of the default Build and Capture Task Sequence. So I use in my Capture Only Task Sequence the following steps:CaptOnlyTS

  • Join Workgroup (this step is only necessary when the Reference Machine is joined to a domain)
  • Prepare ConfigMgr Client
  • Prepare OS
  • Capture the Reference Machine

The first steps all need to run in Full OS, which means that you can’t start this Task Sequence by booting in WinPE. I just create an Advertisement without a Mandatory Assignment. This makes the box Allow users to run the program independently of assignments ticked, which makes sure that the Advertisement will show in the Run Advertised Programs on the client. You need to make sure that when you want to use this that the Reference Machine is within the Boundaries of your ConfigMgr 2007 environment. Another option in some, maybe most, cases is to create a Capture CD (see Technet for a How To:

Keep in mind that if you want to do this with Windows XP that you need a step Install Deployment Tools to copy the Sysprep Package to the machine. I put that step most of the time at the end of my Build Task Sequence.

Configuration Manager 2007 R3 is on the calendar

I would like to make a short note of the following announcement: Today, the System Center team is excited to share with you their plan to release System Center Configuration Manager 2007 R3.  This new release of the ConfigMgr is packed with some extremely cool features, which over the coming months they plan to share with you in different ways.

See for the complete article:

After upgrading to ConfigMgr 2007 R2 SP2 (RC) all OS Deployment Task Sequences are failing

After the upgrade of my test lab (which is running in Native Mode) to ConfigMgr 2007 R2 SP2 (RC) all my Task Sequences suddenly fail with the error: An error occurred while retrieving policy for this computer (0x80004005).

Taking a look at my SMSTS.LOG it showed me the error: No cert available for policy decoding.

This made me wonder what happened to my PXE Certificate that I applied to my PXE Service Point. So I took a look at my certificates (System Center Configuration Manager > Site Database > Site Management > <MySiteName> > Site Settings > Certificates > PXE). Here I noticed that my PXE Certificate was just suddenly missing…

So after re-adding my PXE Certificate to my PXE Service Point it all worked fine again. To add a PXE Certificate to the PXE Service Point follow the next steps:

  1. Open the Configuration Manager console and browse to System Center Configuration Manager > Site Database > Site Management > <YourSiteName> > Site Settings > Site Systems.
  2. Select the PXE Service Point and click in the Actions pane Properties to open the ConfigMgr PXE Service Point Properties.
  3. Select the Database tab and select Import Certificate.
  4. Browse to the needed certificate, fill in the Password and click Ok.

Configuration Manager 2007 SP2 RC has been released

Today a little newsflash from the System Center Configuration Manager team.

The System Center Configuration Manager team would like to announce that the following has been released and available for download: Configuration Manager 2007 Service Pack 2 Release Candidate.

This is the official Release Candidate build for Configuration Manager 2007 SP2.

New features:

  • Refer to the SP2 Overview article posted on the primary Configuration Manager MSConnect site for all the new features and new supported configurations.
  • Hotfixes included in SP2 article can be found on the primary Configuration Manager MSConnect page.
  • Deployment guides for BranchCache and the new AMT features are available in the download section.
  • The new OpsMgr07 R2 ConfigMgr07 Management Pack can also be downloaded, this supports 64bit OpsMgr client agents.
  • Please review the Release Notes before performing any installation and upgrade.

Feedback and Support:

  • All registered Sp2 Open Beta users can submit bugs, design change requests (DCR’s), and other feedback. See the help link on the ConfigMgr MSConnect homepage for more instructions.
  • Newsgroups are a great way to post questions and receive general support question answers.

If you experience any issues with the download or the MSConnect site please contact,

The Configuration Manager Customer Team

How to control the bandwidth of the package movements in ConfigMgr 2007

In this post I will give some information about how to control the package movement of ConfigMgr 2007. The table in this post shows the Bandwidth Control options with the different Package Movements in ConfigMgr 2007. Besides the Bandwidth Control it also show if it uses Binary Differential Replication (BDR). BDR is used by ConfigMgr 2007 to update package source files with a minimum of additional network traffic. It sends the parts of the package that have changed since the last time the package was sent. This minimizes the network traffic between sites. A file is considered to be changed if it has been renamed, moved, or its contents have changed.

Package Movement Bandwidth Control BDR
From package source directory to site server None No
From site server to standard distribution point None Yes
From parent site server to child site server Bandwidth controlled by Address settings on the sender between sites Yes
From child site server to child standard distribution point None Yes
From standard distribution point to branch distribution point BITS or manually pre-staged on the branch distribution point Yes
From standard distribution point to client BITS, if BITS-enabled distribution point is available and advertisement is configured to download and run locally. No
From branch distribution point to client None No

More information about Distribution Points:
More information about Binary Differential Replication:

Installing Software Updates via a Task Sequence in ConfigMgr 2007

I noticed that when your Site is running in Native Mode you can run into problems with installing Software Updates via a Task Sequence. The first time that your are installing your computer with your Task Sequence there are no problems, but every time after that the Task Sequence will finish successful but doesn’t install any Software Updates. It looks like that it will use existing scan results of the client from the previous scan. So when there are already scan results of your client it will not rescan during your Task Sequence.

To work around this I use the following scripts (that I run before the step Install Software Updates in the Task Sequence):

  1. Initiate Software Updates Scan:
    actionNameToRun = “Software Updates Assignments Evaluation Cycle”

    Dim oCPAppletMgr
    Set oCPAppletMgr = CreateObject(“CPApplet.CPAppletMgr”)

    Dim oClientActions
    Set oClientActions = oCPAppletMgr.GetClientActions()

    ‘Loop through the available client actions. Run the matching client action when it is found.
    Dim oClientAction
    For Each oClientAction In oClientActions
       If oClientAction.Name = actionNameToRun Then
       End If

  2. Refresh Compliance State:
    dim newCCMUpdatesStore
    set newCCMUpdatesStore = CreateObject (“Microsoft.CCM.UpdatesStore”)

    ‘Refresh the server compliance state by running the RefreshServerComplianceState method.

The first script Initiate Software Updates Scan is to let the client check if it needs new updates and the second script Refresh Compliance State is to let the client report back to the server that it needs updates.

Note: It can also happen when you are trying to avoid obsolete clients by starting the Task Sequence via Run Advertised Program.

How to install the App-V Client with ConfigMgr 2007

In some of my previous posts I mentioned that you still need the App-V Client to run the Virtual Applications. In this post I will tell the easiest way to install the App-V Client with ConfigMgr 2007. A prerequisite for this is that ConfigMgr 2007 SP1 R2 is installed and that the source files of the App-V Client (version 4.5 (CU1)) are available on a network share.

For installing the App-V Client with ConfigMgr there is a Package Definition file added by the R2 installation. I would recommend to use this file for installing the App-V Client with ConfigMgr. To do this follow the next steps:

  1. Open the Configuration Manager Console and browse to System Center Configuration Manager > Site Database > Computer Management > Software Distribution.
  2. Select Packages and click in the Actions pane New > Package From Definition to open the Create Package from Definition Wizard
  3. On the Welcome page, click Next.
  4. On the Package Definition page Browse to the AppVirtMgmtClient.sms file (the default location for the AppVirtMgmtClient.sms file is <Installation directory>\SMS\Tools\VirtualApp\AppVirtMgmtClient.sms) and click Next.
  5. On the Source Files page select Always obtain files from a source directory and click Next.
  6. On the Source Directory page Browse to the directory that contains the source files for the App-V Client and click Next
  7. On the Summary page review the Details and click Finish.
  8. To access the new package select the Packages node and the package will show in the Results pane.

Note: Do not forget to create a Distribution Point for the new package before advertising it.