ConfigMgr 2007 and Binary Differential Replication

In a previous post I already mentioned Binary Differential Replication (BDR). In this post I will also show how to configure it. ConfigMgr 2007 can use BDR to update package source files with a minimum of additional network traffic. When ConfigMgr 2007 updates the source files for a package, and uses BDR, it sends the parts of the package that have changed since the last time the package was sent. So BDR will work after the source files have already been distributed. This minimizes the network traffic, especially when the package is large and the changes are small. A file is considered to be changed if it has been renamed, moved, or its contents have changed.

BDR will work as long as a site has a one of the previous five versions of the package. The originating site keeps track of the differences between the current version and the previous five versions. AppPackPropIf a site has an older version of the package, the originating site will send the entire package.

How to enable Binary Differential Replication

  1. Open the Configuration Manager console and browse to System Center Configuration Manager > Site Database > Computer Management > Software Distribution.
  2. Select a Software Package and click in the Actions pane Properties to open the <Software Package> Properties.
  3. Select the Data Source tab and check the Enable Binary Differential Replication checkbox (see the picture).

BDR has to be enabled on every single Package.


ConfigMgr Client failed to download policy

Sometimes it happens that a client cannot get its policies and the only errors you can find are that the Download of policy [PolicyID, PolicySource, PolicyVersion] failed (PolicyAgent.log) and that the DTSJob is in state ‘Error’ (DataTransferService.log). The weird part in here is that the client can connect to the Management Point (MP).

By looking at it with BitsAdmin it shows that not all the policies can be downloaded. The errors that it shows, look like there are problems with WMI. Now that the problem is located it is easy to solve. The only thing that has to happen is to repair WMI and to re-register the WMI Services.

How to repair and re-register WMI

  • Stop the WMI Service (winmgmt),
  • Remove the folder Repository in %systemroot%\system32\wbem,
  • Start the WMI Service.
  • Re-register the WMI Services (For this it is possible to use the following three commands:
    1. cd /d %windir%\system32\wbem
    2. for %i in (*.dll) do RegSvr32 -s %i
    3. for %i in (*.exe) do %i /RegServer)

Compatibility of different types of Distribution Points

I noticed that it can be handy to know which types of Distribution Points are compatible with each other. For example, if you want to setup Multicast you can NOT use a Server Share. There is documentation about this, but for me it was hard to find. This is why I posted the most important part of this article (the compatibility table) in this post.

  Server Server Share Branch Standard BITS-Enabled Protected Mobile Device Support Internet Based Clients Streaming Multicast
Server N/A No Yes Yes Yes Yes Yes Yes Yes Yes
Server Share No N/A No No Yes Yes Yes No Yes No
Branch Yes No N/A No No Yes No No Yes No
Standard Yes No No N/A Yes Yes Yes Yes Yes Yes
BITS-Enabled Yes Yes No Yes N/A Yes Required Required Yes Yes
Protected Yes Yes Yes Yes Yes N/A Yes Yes Yes Yes
Mobile Device Yes Yes No Yes Required Yes N/A Yes No Yes
Supporting Internet Based Clients Yes No No Yes Required Yes Yes N/A Yes No
Streaming Yes Yes Yes Yes Yes Yes No Yes N/A Yes
Multicast Yes No No Yes Yes Yes Yes No Yes N/A

More information About Distribution Points:


Distribution Point Groups in ConfigMgr 2007

This time I want to devote a post to Distribution Point Groups in ConfigMgr 2007. The most important thing to understand is that Distribution Point Groups are NOT meant to balance the load. Distribution Point Groups are meant to facilitate the processes of copying packages to Distribution Points (DP). Packages can then be sent to a Group of DP’s rather than to a single DP.

One important thing to remember is that if you add a DP to an existing Group of DP’s, the new DP does not automatically receive packages that are previously copied to that Group.

Create a Distribution Point Group by following 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/ a Distribution Point and click in the Actions pane Properties to open the ConfigMgr Distribution Point Properties.
  3. Select the General tab and press with Group Membership the New Icon.
  4. On the Distribution Point Group General Tab fill in a Distribution Point Group Name, select Include this site system in the Distribution Point Group and click Ok.

More information about Distribution Point Group Membership:


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: