<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://myitforum.com/cs2/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Maik Koster at myITforum.com</title><link>http://myitforum.com/cs2/blogs/maikkoster/default.aspx</link><description>giving something back after taking a lot :-)</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 SP2 (Build: 31113.47)</generator><item><title>MDT Web FrontEnd – How To handle SCCM Packages</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx</link><pubDate>Sun, 21 Mar 2010 12:28:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:145549</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=145549</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx#comments</comments><description>&lt;p&gt;MDT has a built-in feature that allows you to install packages from SCCM on the fly during the Deployment process. More or less similar to &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx" target="_blank"&gt;installing applications from MDT&lt;/a&gt;. While this is great for dynamic deployments, it’s not that easy to use as you have to define the package with it’s package id and the program of the package to be run. A typical entry looks like&lt;/p&gt;
&lt;p&gt;MKO0023E:MDT – Install Microsoft Office 2007&lt;/p&gt;
&lt;p&gt;I`m pretty sure that most of you that used this feature have spent already some time on getting all the necessary entries and spent even more time on troubleshooting errors caused by typos or renamed programs. Not to mention that these entries are even case-sensitive as &lt;a href="http://myitforum.com/cs2/blogs/cnackers/archive/2010/03/18/configmgr-mdt-2010-install-software-task-sequence-step.aspx" target="_blank"&gt;Chris Nacker just had to find out the hard way&lt;/a&gt; ;-). So one way to ease this is to create a report in SCCM presenting a list of PackageID:ProgramName values with some additional information ready to be copied to MDT. &lt;/p&gt;
&lt;p&gt;A second option is to use the &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt; for this. Using the FrontEnd you are able to search for all existing packages on a certain SCCM Server that fulfills certain conditions (more on this later). You are also able to replace a currently used package with a different one. Let’s say you have been using the MDT Database already quite some time to deploy computers and made heavy use of the SCCM Packages. Now one of the packages used becomes obsolete and is replaced by a new version or even by a different application. How do you make sure that the old package isn’t used anymore or even better, how do you simply update all entries with the new one?&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;Configure the Database connection&lt;/h3&gt;
&lt;p&gt;Let’s start. To be able to query a SCCM Server, we first need to have a valid connection to it. To check this, click on the &lt;strong&gt;Admin&lt;/strong&gt; and then on the &lt;strong&gt;Configuration&lt;/strong&gt; tab. You will see the configuration of the two database connections the Web FrontEnd is using. Now click on the “Test SCCM DB connection” button and you should see a small notice if the connection was successful. If not it should show you the error message to help you finding the issue. If you haven’t configured the database connection yet, please see &lt;a title="http://mdtwebfrontend.codeplex.com/wikipage?title=Database%20Connection" target="_blank"&gt;Configuration of the database connections&lt;/a&gt; from the &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;Documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_22E64D4A.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_3DBF46CB.png" width="653" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Search for packages&lt;/h3&gt;
&lt;p&gt;OK, we can connect to SCCM. Now we want to add a new package to a new Role. I generally &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2008/12/29/using-roles-for-software-assignment-in-mdt.aspx" target="_blank"&gt;recommend to use Roles&lt;/a&gt; for such things. This way you only have to search for the package once, you can ensure the correct order if several packages that need to be installed due to some pre-requisites and it’s easier to update them. So for this example, we create a new Role “&lt;strong&gt;Frameworks&lt;/strong&gt;”. Now we open the details of this role and click on the package tab. You can now either type in the valid packageid:programname combination or you simply click on the button &lt;strong&gt;Search for SCCM packages&lt;/strong&gt;. This brings you to a search window. If you have configured the FrontEnd to show all existing packages as soon as you open the search page (see the &lt;strong&gt;admin&lt;/strong&gt; - &lt;strong&gt;configuration&lt;/strong&gt; tab) you will see a list of all packages. Depending on the amount of packages, this might take a moment to process. I generally prefer to have it empty at the beginning and then just search for the required ones. Anyway, you might notice that not really all packages are shown. &lt;/p&gt;
&lt;p&gt;To be able to install a certain package during the Deployment process, it needs to fulfill some requirements. The program needs to be able to run in a Task Sequence (on the advanced tab of the program properties). &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_4EE2FEA1.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_4F3F0BC9.png" width="290" height="334" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And it must not be configured to interact with the user. So it needs to be completely silent. Additionally you have the possibility to “hide” certain programs and/or packages by simply adding the word “Hidden” to the Description of the package/program. If you add it to the package it won’t be shown at all. If you just add it to a program the package will still be shown but the list of available programs will be limited.&lt;/p&gt;
&lt;p&gt;Let’s have a look on the actual search result:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_250F5DE1.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_75611987.png" width="456" height="531" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You might notice that some programs are slightly highlighted. The FrontEnd will highlight each program that contains “MDT” somewhere in it’s name. I recommend creating a specific program per package for MDT usage only and I found it useful to highlight those entries.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ok, we select the Framework 1.1 and 3.5 SP1 to be added to the “Frameworks” Role and click on “Add selected”&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_03FB9FA0.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_626C4A43.png" width="358" height="131" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Now we have added them to the role. As you can see those entries aren’t really user-friendly but the FrontEnd makes them handy.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_7AAF3E91.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_6BF46CDF.png" width="467" height="319" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Update Packages&lt;/h3&gt;
&lt;p&gt;But wait, we have added the .Net Framework 1.1 only. It probably would have been better to use the .Net Framework 1.1 with SP1 included. We know that we have a package for this is available but what about if this is already used in other Roles, Locations, Computers, etc. as well? Would be nice to update all of them with the SP1 package, wouldn’t it? &lt;/p&gt;
&lt;p&gt;OK, click on the Admin tab and then on Packages. You will see a list of all packages currently used within the Database. Packages used several times will be combined into one single entry. To see all the Identities using one of the packages, simply click on the name of the package. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_0DB01FA4.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_49AC3B8C.png" width="466" height="98" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;But as we want to update all of them anyway, we just click on the Edit icon of the package you would like to update. That will get you to a screen that allows you to update all instances at once. You can now either type in the new packageid:programname entry or again make your life easier and search for a package as replacement as shown before. This time you would only be able to select a single package but that’s generally the only difference. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1282AD93.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_6F723C22.png" width="499" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then you just need to add the word “Hidden” to the Description of the Framework 1.1 Package and it won’t pop up in future and you have greatly limited the chance that anybody else is using the wrong package again.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For more information about other topics have a look on the &lt;a href="http://mdtwebfrontend.codeplex.com/documentation"&gt;Documentation on Codeplex&lt;/a&gt;. If you aren’t using the FrontEnd yet, just &lt;a href="http://mdtwebfrontend.codeplex.com/releases/view/35756"&gt;download it from Codeplex&lt;/a&gt; now and follow the &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide"&gt;Installation Guide&lt;/a&gt;. It will take you less than 10 minutes and you will already be able to configure your first values no matter if you are using the MDT Database already or just going to create it now. &lt;/p&gt;
&lt;p&gt;I really appreciate all the feedback. Just get back to me if you need to have a specific topic covered in more detail.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This &lt;strong&gt;How To&lt;/strong&gt; is part of a series showing different features of the Web FrontEnd. If you got something useful out of this one, please also have a look on the others published so far: &lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx"&gt;How To restrict access to the Deployment Database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx"&gt;How To configure what a User can see and edit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;How To handle Custom Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx"&gt;How To create custom Lists to select pre-defined values for a setting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx"&gt;How To handle MDT Applications in the FrontEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx" target="_blank"&gt;How To handle SCCM packages&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=145549" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/SCCM/default.aspx">SCCM</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx">How To</category></item><item><title>MDT Web FrontEnd – How To handle MDT applications in the FrontEnd</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx</link><pubDate>Fri, 05 Mar 2010 10:05:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:145312</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=145312</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx#comments</comments><description>&lt;h3&gt;The Problem&lt;/h3&gt;
&lt;p&gt;One of the main drawbacks of the &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt; (there aren’t many ;-) ) is, that it does not have direct access to the Deployment Share(s). Normally that wouldn’t be a problem as most of the settings don’t interact with anything stored in the Database. Except applications imported into MDT. As you know you can import Applications into MDT and use them in your Deployment. As long as you choose them directly in the LTI Wizard no problem. But what if you want to add those applications to the database? &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Possible solutions&lt;/h3&gt;
&lt;p&gt;You could type them in. Probably possible and the Beta 2 of the FrontEnd was just offering a single textbox for this. I have to admit, it was a bad idea as MDT is referencing each application internally using a GUID (Yes, one of those unhandy, 32 character long thingies). Ok, time to improve it. How could we solve this? &lt;/p&gt;
&lt;p&gt;The long term solution is probably to add some Powershell capabilities into the FrontEnd and let it communicate directly with a MDT Deployment Share to get the necessary information. As this is not as easy as it sounds, I choose an intermediate step for the &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/01/version-1-0-of-the-mdt-web-frontend-released.aspx" target="_blank"&gt;first release of the FrontEnd&lt;/a&gt;. You simply import an existing Applications.xml file into the FrontEnd. The Applications.xml file can be found on each Deployment Share in the &lt;strong&gt;Control&lt;/strong&gt; folder and stores the information about all applications available in MDT. The FrontEnd will read this file and import parts of the information into a table in the MDT Database making it possible to select those applications in the FrontEnd instead of typing them in. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;An Example&lt;/h3&gt;
&lt;p&gt;Let’s see an example.&lt;/p&gt;
&lt;p&gt;Open the &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt;, click on the &lt;strong&gt;Admin&lt;/strong&gt; and then on the &lt;strong&gt;Applications&lt;/strong&gt; tab. If already imported you will see a list of all currently available applications. This will be a merged combination of all Applications imported into the FrontEnd using the Applications.xml file and all other applications configured either by hand or by the MDT Workbench. All Applications not imported yet will be shown with their GUID value. &lt;/p&gt;
&lt;p&gt;OK, to import the Applications.xml file, click on the button labeled “&lt;strong&gt;Upload MDT Applications.xml file&lt;/strong&gt;”.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_739BC7B1.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_22BD8D7C.png" width="572" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the following screen, click on the &lt;strong&gt;Browse&lt;/strong&gt; button to pick the appropriate file (as said you will find it in the Control folder of a MDT Deployment Share). Then select if you would like to fully synchronize or just update the the applications. The difference is, that a synchronize will also remove applications no longer in the applications.xml file from the Database including all references to it. An update will keep those old entries. Generally a synchronize is the right option as you probably don’t want to use applications no longer available in MDT itself. But the update might be an option if you need to import several files if you use the same database from different Deployment points with different applications. Should not be common but it is possible. Click on &amp;quot;&lt;strong&gt;Upload&lt;/strong&gt;” to start the import.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_639C5D20.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_6FBDD747.png" width="473" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The import shouldn’t take much time and after it you should be redirected to the list of applications again and now be able to see the newly imported Applications. Now you can use them in other screens as well:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_7C4B8463.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_1EC0131F.png" width="515" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Another thing I would like to mention about the &lt;strong&gt;Admin&lt;/strong&gt; – &lt;strong&gt;Applications&lt;/strong&gt; tab. From here you can also completely remove or replace a single application from the database including all references. To see the list of all references, click on the name of the application (which is actually a link). To delete or update click the appropriate icons.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1CA31456.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_4F2671C8.png" width="521" height="219" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_3817F08C.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_520BB0AE.png" width="521" height="224" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For more information about other topics have a look on the &lt;a href="http://mdtwebfrontend.codeplex.com/documentation"&gt;Documentation on Codeplex&lt;/a&gt;. If you aren’t using the FrontEnd yet, just &lt;a href="http://mdtwebfrontend.codeplex.com/releases/view/35756"&gt;download it from Codeplex&lt;/a&gt; now and follow the &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide"&gt;Installation Guide&lt;/a&gt;. It will take you less than 10 minutes and you will already be able to configure your first values no matter if you are using the MDT Database already or just going to create it now. &lt;/p&gt;
&lt;p&gt;I really appreciate all the feedback. Just get back to me if you need to have a specific topic covered in more detail.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This &lt;strong&gt;How To&lt;/strong&gt; is part of a series showing different features of the Web FrontEnd. If you got something useful out of this one, please also have a look on the others published so far: &lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx"&gt;How To restrict access to the Deployment Database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx"&gt;How To configure what a User can see and edit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;How To handle Custom Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx"&gt;How To create custom Lists to select pre-defined values for a setting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx"&gt;How To handle MDT Applications in the FrontEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx" target="_blank"&gt;How To handle SCCM packages&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=145312" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx">How To</category></item><item><title>MDT Web FrontEnd – a Bugfix, a 64 Bit Version and some troubleshooting help</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/04/mdt-web-frontend-a-bugfix-a-64-bit-version-and-some-troubleshooting-help.aspx</link><pubDate>Thu, 04 Mar 2010 20:44:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:145304</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=145304</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/04/mdt-web-frontend-a-bugfix-a-64-bit-version-and-some-troubleshooting-help.aspx#comments</comments><description>&lt;p&gt;First I would like to thank you all for your feedback so far. Almost 130 downloads within 3 days is quite impressive for such a solution.&lt;/p&gt;
&lt;p&gt;And although just released it was necessary to already patch a small bug. Cleaning up the code close before publishing the first version created a small bug that will cause an error on the access role evaluation. Sadly this affects all non-admin users configured in the frontend so it’s highly recommended to implement this patch. Luckily it’s enough to replace a single dll (MaikKoster.MDT.MVC.dll) in the bin folder of the FrontEnd. Find the &lt;a href="http://mdtwebfrontend.codeplex.com/releases/view/35756" target="_blank"&gt;download on CodePlex&lt;/a&gt;. It brings the FrontEnd to version 1.0.1.&lt;/p&gt;
&lt;p&gt;Additionally a second download has been made available. It turned out that it was necessary to create a specific version for 64 Bit systems due to some libraries used for database access that need a special 64 Bit version. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Some general recommendations on Troubleshooting&lt;/p&gt;
&lt;p&gt;- Make sure you have the .Net Framework 3.5 SP1 installed. Be aware that it needs to be enabled as a “Feature” on Windows Server 2008 R2&lt;/p&gt;
&lt;p&gt;- Make sure you have IIS with ASP.Net Support configured&lt;/p&gt;
&lt;p&gt;- On IIS 6 you need to configure Wildcard mapping. See the &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Add%20FrontEnd%20IIS6&amp;amp;referringTitle=Installation%20Guide" target="_blank"&gt;Installation Guide&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;- Disable anonymous authentication and be sure to &lt;strong&gt;enable&lt;/strong&gt; Windows authentication. It might be disabled on default installations of Windows Server 2008&lt;/p&gt;
&lt;p&gt;- Configure a specific account for the IIS application as described in the &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;Documentation&lt;/a&gt;. On any problems add this account to the group of local administrators before any further troubleshooting. Permission problems constitute in weird error message not directly targeting to this. If the error does not occur after that you need to spent some time on getting the permissions right. I will add some general recommendations to the &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide&amp;amp;referringTitle=Documentation" target="_blank"&gt;Installation Guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;- If you try to configure the Database connections via the Admin – Configuration tab it might take up to a minute to open this page. This should happen only if you have a Database server configured that can’t be reached at that moment. If it doesn’t show anything at all try to open the page &lt;a href="http://localhost/YourFrontEndName/Admin/configure"&gt;http://localhost/YourFrontEndName/Admin/configure&lt;/a&gt; (while replacing YourFrontEndName&amp;nbsp; :-) ). This should show you more information on the error happening. So far in most cases where this issue happened, it was due to disabled Windows authentication.&lt;/p&gt;
&lt;p&gt;If more common issues arise I will update this post and also place a copy to the Installation Guide in the Online Documentation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Sorry for any inconvenience caused and I appreciate all the help I got so far troubleshooting these issues. &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=145304" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category></item><item><title>MDT Web FrontEnd - How To create custom Lists to select from pre-defined values for a setting</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx</link><pubDate>Tue, 02 Mar 2010 09:28:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:145241</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=145241</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx" target="_blank"&gt;the Last Post&lt;/a&gt; I showed you, how you can easily create a custom Setting in the MDT Database and use it in your custom scripts. In the example shown we added a custom Setting called “&lt;strong&gt;CollectionID&lt;/strong&gt;” to the Database to enable some kind of Pre-staging for computers. With the example you would e.g. be able to pre-stage computer based on their SerialNumber in the MDT Database and then add it on the fly to the appropriate collection on the fly when pxe/cd booting the new computer. Very helpful if your hardware vendor can’t supply you with a valid MAC Address in advance.&lt;/p&gt;
&lt;p&gt;But wouldn’t it be nice to not require the User to enter a specific CollectionID? Wouldn’t it be nice to give him a pre-defined list of values he can select from? Let’s see how we can solve this with the &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt;. A new feature that came with &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/01/version-1-0-of-the-mdt-web-frontend-released.aspx" target="_blank"&gt;Version 1&lt;/a&gt; is the option to create custom Lists and assign those lists to individual settings.&lt;/p&gt;
&lt;p&gt;A &lt;strong&gt;List&lt;/strong&gt; consists of one or several &lt;strong&gt;List Entries&lt;/strong&gt;. Each defined by a &lt;strong&gt;Text&lt;/strong&gt; shown to the User and a &lt;strong&gt;Value&lt;/strong&gt; stored in the Database. Also a list can either allow only a single value to be selected or multiple values. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Let’s start with the single select as this is what we would need for our example (selecting multiple collections doesn’t make much sense in this scenario). OK, we need a new List. Open the MDT Web FrontEnd, click on the &lt;strong&gt;Settings&lt;/strong&gt; and then on the &lt;strong&gt;Lists&lt;/strong&gt; tab. You will see an overview about all the lists configured so far. The FrontEnd comes already with some pre-defined lists. Now click on the &lt;strong&gt;Add List&lt;/strong&gt; button.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/Lists_Add_Step1_3F398A1A.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:0px;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:0px;" title="Lists_Add_Step1" border="0" alt="Lists_Add_Step1" src="http://myitforum.com/cs2/blogs/maikkoster/Lists_Add_Step1_thumb_1E829AA8.png" width="273" height="272" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;First our new List needs a meaningful name. Let’s call it &lt;strong&gt;Collections&lt;/strong&gt; and give it a short description to help others identifying the lists content. Don’t check the &lt;strong&gt;Select Multiple&lt;/strong&gt;. We will see another example for this later in this HowTo. After supplying a new name, click the &lt;strong&gt;Save&lt;/strong&gt; button.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/Lists_Add_Step2_113C1195.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="Lists_Add_Step2" border="0" alt="Lists_Add_Step2" src="http://myitforum.com/cs2/blogs/maikkoster/Lists_Add_Step2_thumb_28F348FB.png" width="273" height="261" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now we nee to add some Entries to the list. Each Entry consists of the text shown to the User and the value stored in the Database. See the following screen for an example.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/Lists_Edit_AddEntry_Step2_66A030B7.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="Lists_Edit_AddEntry_Step2" border="0" alt="Lists_Edit_AddEntry_Step2" src="http://myitforum.com/cs2/blogs/maikkoster/Lists_Edit_AddEntry_Step2_thumb_5644B8FE.png" width="272" height="588" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;You can edit these lists at any later time. Removing old entries, adding new ones and also re-order them. &lt;/p&gt;
&lt;p&gt;OK, next step. We now need to assign this list to our Setting. In the last post we used a category called Helpdesk Settings for this. Let’s update this category. Click on the &lt;strong&gt;Settings&lt;/strong&gt; tab and then on the &lt;strong&gt;Categories&lt;/strong&gt; tab. Now click the &lt;strong&gt;edit Icon&lt;/strong&gt; of our Helpdesk Settings category. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_09CBC21D.png"&gt;&lt;img title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_4CC7908A.png" width="499" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As we can’t edit an existing setting, we need to remove the setting first and then we re-add it using the new List (Yes, it’s on my ToDo list for the next release)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1FA6E7ED.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_6F9C966B.png" width="320" height="283" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;After saving all our changes are effective immediately. Let’s see how this looks like to our Helpdesk Users. For demonstration purposes I added the &lt;strong&gt;CollectionID&lt;/strong&gt; setting again to a different Category so that you can see that the value stored in the Database is still the collection id itself. (It’s configured as &lt;strong&gt;ReadOnly&lt;/strong&gt; so won’t disturb anything)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_0BE9D88C.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_34C4C7C8.png" width="457" height="242" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;OK, but what about &lt;strong&gt;Multiple values&lt;/strong&gt;? &lt;/p&gt;
&lt;p&gt;A good example for this is the setting KeyboardLocale. This setting defines the default keyboard layout installed on Windows XP Systems. And it can take more than one value. Let’s create a custom list to let our Helpdesk users pick the appropriate values. We open the lists and add a new list as described earlier. But this time check the &amp;quot;&lt;strong&gt;Select Multiple&lt;/strong&gt;” checkbox. Now add a couple of valid entries to the list. The example below is showing the necessary settings for German (Germany), English (US), English (UK), French (France) and Norwegian (Norway - Nynorsk) taken from &lt;a href="http://msdn.microsoft.com/en-us/goglobal/bb895996.aspx" target="_blank"&gt;Locale IDs, Input Locales, and Language Collections for Windows XP and Windows Server 2003&lt;/a&gt;. Finding the appropriate values is actually often the hardest part so your co-workers will be very happy to not spent their time on this if you figured it out already ;-)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_49869A7B.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_4DB07240.png" width="330" height="588" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now you can use this List again to assign it to a setting as described already. Let’s have a look on how it would look like for our Helpdesk Users when editing the settings of a computer&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_718923CD.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_45A8AA11.png" width="474" height="345" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;the Demo Category contains again a &lt;strong&gt;readonly&lt;/strong&gt; copy of this setting to see how it is stored in the database. All entries from the list can be chosen by the dropdown list. All values are shown but only the ones still available can be clicked. The chosen values can be re-ordered by Drag&amp;amp;Drop and the order will also be reflected by the order stored in the database.&lt;/p&gt;
&lt;p&gt;As you can see another useful feature for the &lt;strong&gt;&lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;Web FrontEnd&lt;/a&gt;&lt;/strong&gt; making the daily handling for you and your co-workers a lot easier. For more information about other topics have a look on the &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;Documentation on Codeplex&lt;/a&gt;. If you aren’t using the FrontEnd yet, just &lt;a href="http://mdtwebfrontend.codeplex.com/releases/view/35756" target="_blank"&gt;download it from Codeplex&lt;/a&gt; now and follow the &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide" target="_blank"&gt;Installation Guide&lt;/a&gt;. It will take you less than 10 minutes and you will already be able to configure your first values no matter if you are using the MDT Database already or just going to create it now. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This &lt;strong&gt;How To&lt;/strong&gt; is part of a series showing different features of the Web FrontEnd. If you got something useful out of this one, please also have a look on the others published so far: &lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx"&gt;How To restrict access to the Deployment Database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx"&gt;How To configure what a User can see and edit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;How To handle Custom Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx"&gt;How To create custom Lists to select pre-defined values for a setting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx"&gt;How To handle MDT Applications in the FrontEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx" target="_blank"&gt;How To handle SCCM packages&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=145241" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2008/default.aspx">MDT 2008</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Microsoft+Deployment/default.aspx">Microsoft Deployment</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2010/default.aspx">MDT 2010</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx">How To</category></item><item><title>Version 1.0 of the MDT Web FrontEnd released</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/01/version-1-0-of-the-mdt-web-frontend-released.aspx</link><pubDate>Mon, 01 Mar 2010 13:17:17 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:145217</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=145217</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/01/version-1-0-of-the-mdt-web-frontend-released.aspx#comments</comments><description>&lt;p&gt;Finally it’s done! &lt;/p&gt;  &lt;p&gt;I’m very happy to announce the release of version 1.0 of the &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt;. It took a bit longer than expected since the last Beta from November 2009 but a lot of nice things needed to be added. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;But first, what is the &lt;strong&gt;MDT Web FrontEnd&lt;/strong&gt;?&lt;/p&gt;  &lt;p&gt;The MDT Web FrontEnd is a web based alternative for the MDT configuration database. It is 100% compatible to current MDT 2008, MDT 2008 Update 1 and MDT 2010 database installations running on SQL 2005 or 2008. Optionally (and recommended) it is possible to extend existing databases to add a lot of new useful features while still maintaining full compatibility to the original MDT Deployment Workbench.&lt;/p&gt;  &lt;p&gt;Let’s have a quick overview about the features (bold ones have been added after Beta 2)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Role-based security Model &lt;/li&gt;    &lt;li&gt;customized Groups of Settings including Custom Settings &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;create custom settings&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;custom Lists to choose from predefined values (single or multiple items)&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;searching for Locations / MakeModels / Computers / Roles &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;input validation for common fields (MAC, UUID, Gateway, …)&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;browsing for Packages directly on a SCCM Server &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;select multiple packages from SCCM at the same time&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Drag&amp;amp;Drop reordering of Applications, Packages, and Roles &lt;/li&gt;    &lt;li&gt;Editing/Deleting of all Instances of a specific Application, Package, or Administrator &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;List all references for a specific Application, Package, Administrator&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Import Applications.xml file from the MDT Workbench to easily select applications&lt;/strong&gt;&amp;#160; &lt;/li&gt;    &lt;li&gt;manage PackageMappings/RoleMappings &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;configure the FrontEnd directly from the browser (No need to use IIS)&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;create and upgrade MDT Databases directly from the FrontEnd&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The main purpose is to ease the database handling. Using this Web FrontEnd you can easily configure &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx" target="_blank"&gt;what a User can see and edit&lt;/a&gt;. Think of giving local Site Admins access to their Site(s) only, or enabling the Helpdesk staff to manage all computers while not messing around with your Role configuration. Additionally reduce the amount of available settings to the ones they really need. Create additional custom settings specific for your environment and combine them into some customized views. Create custom lists so that Users can pick from different values to avoid errors by typos. You don’t want to give all your IT Users full access to the MDT database and install the full Deployment workbench on all their computers? You don’t want to overwhelm them with 215+ settings? Then give the MDT Web FrontEnd a try.&lt;/p&gt;  &lt;p&gt;Find the &lt;a href="http://mdtwebfrontend.codeplex.com/releases/view/35756" target="_blank"&gt;download on Codeplex&lt;/a&gt; with a (still growing) &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;online documentation&lt;/a&gt;. It includes a detailed &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide" target="_blank"&gt;Installation Guide&lt;/a&gt; for new installations and also upgrades from current Beta 2 users. Also have a look on &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx" target="_blank"&gt;some HowTos published already on this blog&lt;/a&gt;. Expect a couple more during the next few weeks getting into more details of some new features.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A special &lt;strong&gt;Thank You&lt;/strong&gt; goes to Jason Scheffelmaer, who has been testing this FrontEnd since the very early versions helping me to get (hopefully) most of the bugs out of it. Also thanks to all the people already using this FrontEnd in their Test and Production environments and for all the feedback I got so far and that haven’t been mentioned here. Not all ideas and requests made it into this version but be sure that this won’t be the last one. If you would like to participate, please get in contact to me. It would be really great to get some support on extending the current documentation and quite obvious I also need help on the optical part ;-). If you are using the FrontEnd in your environment and found a good way to solve some common issues with it, just blog about it to help others solving their issues or to give them new ideas on how to ease certain parts. This year will probably be stamped by a lot of large upgrades from XP/Vista to Windows 7. So having real-world experience available is a key to success. And I hope (actually I’m pretty sure) the MDT Web FrontEnd will become a nice piece in your Deployment solution.&lt;/p&gt;  &lt;p&gt;As always, I appreciate all your comments and thoughts. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Be aware, the MDT Web FrontEnd is provided “AS IS” without express or implied warranty of any kind. So you use it on your own risk. Be sure to test it before using it in a production environment.&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=145217" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2008/default.aspx">MDT 2008</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Microsoft+Deployment/default.aspx">Microsoft Deployment</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2010/default.aspx">MDT 2010</category></item><item><title>MDT Web FrontEnd – How To handle Custom Settings/Properties</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx</link><pubDate>Mon, 01 Feb 2010 17:01:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:144718</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=144718</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx" target="_blank"&gt;In the last post&lt;/a&gt; I showed you how you can create custom Groups of settings, making it possible to give different Users a different amount of available and changeable information. In this post, I will show you some more advanced features of the MDT Web FrontEnd as it is able to handle custom settings the same way as handling the MDT built-in settings.&lt;/p&gt;
&lt;p&gt;MDT gives us a lot of possibilities right out of the box. But often you reach a point in your Deployment, where the built-in methods, scripts and properties aren’t enough to do the job. While creating and adding custom scripts isn’t to difficult (have a look on Tim Minters Post about &lt;a title="http://deployment.xtremeconsulting.com/2009/11/03/writing-custom-scripts-with-mdt-2010/" href="http://deployment.xtremeconsulting.com/2009/11/03/writing-custom-scripts-with-mdt-2010/" target="_blank"&gt;writing custom scripts with mdt 2010&lt;/a&gt; as a reference) handling custom settings can become difficult. But when do you need a custom setting? At least in all cases where you need to store something (other than the default information) that shall be used later during your Deployment. It might be used as a necessary value in your scripts, it might be to specify if a certain task shall run etc.&lt;/p&gt;
&lt;h3&gt;So how can we create custom settings?&lt;/h3&gt;
&lt;p&gt;The easiest way is simply defining them in the customsettings.ini. Have a look at this sample:&lt;/p&gt;&lt;pre&gt;&lt;font face="Consolas"&gt;[Settings] &lt;br /&gt;Priority=ComputerSpecificSettings,ComputerSpecificRoles, RoleSpecificPackages,Default &lt;br /&gt;Properties=MyCustomSetting,MyCustomList*&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;As you know already, the “&lt;strong&gt;Priority&lt;/strong&gt;” tells the Gather process what sections and in what order to parse. The “&lt;strong&gt;Properties&lt;/strong&gt;”&amp;nbsp; line tells the Gather process what custom settings/properties shall be used (Settings and Properties are identical. They are called “Settings” in the database, that’s why I use this synonym in this post). So in this example we created a “&lt;strong&gt;MyCustomSetting&lt;/strong&gt;” which can take almost any single value. And using the “&lt;strong&gt;*&lt;/strong&gt;” at the end we created a List “&lt;strong&gt;MyCustomList&lt;/strong&gt;” that can store a couple different values (like the built-in “Applications” or “Packages” lists).&lt;/p&gt;
&lt;p&gt;That’s actually enough to be able to use those new settings in your Task Sequence. You can assign values by something like MyCustomSetting=ABC-%SerialNumber% and use them in your scripts using something like “oProperties(“MyCustomSetting”)…”. Assigning the proper value to your custom setting using different sections is quite easy. But what happens if you have a setting that can have a multitude of different values? What if you don’t want to extend your customsettings.ini even further as it is already hard to read? The next best option is to store this setting in the MDT Deployment Database you probably have configured already. If not I highly recommend setting this up, even in simpler environments. It takes only a couple of minutes to set up but will save you a lot of time as soon as you have changes in the configuration of your Deployment. Please see Tim Minters Post about &lt;a title="http://deployment.xtremeconsulting.com/2009/11/24/understanding-the-mdt-configuration-database-part-1/" href="http://deployment.xtremeconsulting.com/2009/11/24/understanding-the-mdt-configuration-database-part-1/" target="_blank"&gt;Understanding the MDT configuration database&lt;/a&gt; for a better introduction on why to use it and how to set it up. &lt;/p&gt;
&lt;p&gt;Let’s start with the bad things. The MDT 2008 Deployment workbench isn’t able to handle custom settings at all (without changes to the code). MDT 2010 is able to handle custom settings but they need to exist in the database already, meaning you need to configure the setting by hand and it will just add this setting at the very end of the long list of 215+ settings. Could be more user-friendly.&lt;/p&gt;
&lt;p&gt;Now to the good things. The MDT Web FrontEnd will help you with this. You can add(!) new custom settings using the FrontEnd and you can add those settings into any of your custom Groups (have a look in the last post about &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx" target="_blank"&gt;How To configure what a User can see and edit&lt;/a&gt; for more information) making them look like and usable as all built-in settings. And this for MDT 2008 and MDT 2010 Databases. But what is a How To without an example?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;An Example&lt;/h3&gt;
&lt;p&gt;As a frequent reader of this Blog you probably have seen already a couple posts about a “&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Boot+Wizard/default.aspx" target="_blank"&gt;Custom Boot Wizard&lt;/a&gt;” which will allow you to boot any known and unknown computer and let you choose from a couple of Task Sequences. But what if you want to pre-stage this information about the TaskSequence for certain computers? Exactly, we need a custom setting to store this information. To keep it simple we just want to store the CollectionID of the target collection in this setting. Saying this, how about calling it “&lt;strong&gt;CollectionID&lt;/strong&gt;”? Open the Web FrontEnd and click on Settings. On the first tab that opens click on the “&lt;strong&gt;Add Custom Setting&lt;/strong&gt;” Button:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_73796F2F.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_19ABA2BB.png" width="290" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Type “&lt;strong&gt;CollectionID&lt;/strong&gt;” and click on “&lt;strong&gt;Create&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/maikkoster/images/CustomSettings_Add_Step2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_42F2C4EC.png"&gt;&lt;/a&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_51D9F406.png"&gt;&lt;/a&gt;&lt;img src="http://myitforum.com/cs2/blogs/maikkoster/images/CustomSettings_Add_Step3.png" alt="" /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This new custom setting is now available to be used for our deployments. But we now need to give our Users the possibility to enter values. It will not(!) automatically be added to the CustomSettings section as in the Deployment Workbench. But making this available for your Users will take just a couple clicks and keep your views in a state you want to have them. We now just extend the custom Group we have created &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx" target="_blank"&gt;in the last post&lt;/a&gt;. As explained already, we need to add settings to an existing or new Category. In the last example, we created only one Category, so again to keep it simple, we will just add our “&lt;strong&gt;CollectionID&lt;/strong&gt;” to this Category. This will enable all our Helpdesk Users to pre-stage this information per computer. OK, to do this, click on the Categories Tab and then on the Edit Icon of our “&lt;strong&gt;Helpdesk Settings&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_09CBC21D.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_4CC7908A.png" width="499" height="78" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;In the list of available settings you should now be able to choose the new custom setting “&lt;strong&gt;CollectionID&lt;/strong&gt;”. Give it a proper name like “&lt;strong&gt;Target Collection ID&lt;/strong&gt;” and a meaningful Description. Keep the Type as “&lt;strong&gt;Text&lt;/strong&gt;”. Save your changes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_32872766.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_0A747847.png" width="880" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If necessary, re-arrange the settings. Now if a Helpdesk User opens the Settings of an existing or new computer, he will see the following:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1B2BFD28.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_57944C05.png" width="520" height="253" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;These are the settings of the same computer shown already. But now the Helpdesk User would be able to enter a (valid) CollectionID. OK, it would be nicer to show him a list of available ID’s but I need to keep some room for improvement ;-)&lt;/p&gt;
&lt;p&gt;So as you can see, handling custom settings with the MDT Web FrontEnd is quite easy. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Integrate it into the Custom Boot Wizard&lt;/h3&gt;
&lt;p&gt;To finish this post, let’s see how we can integrate this “&lt;strong&gt;CollectionID&lt;/strong&gt;” into &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26315" target="_blank"&gt;the Custom Boot Wizard&lt;/a&gt;. Currently if a Computer PXE Boots, a script (&lt;strong&gt;ZTIMediaHook.wsf&lt;/strong&gt;) will check, if there is already a valid OSD Advertisement available for the current computer. If so, it will simply handover to the Task Sequence execution engine. If not, it will show the wizard and let the User sitting in front of the computer choose a Collection to put the computer into. Now we want it to first check if there is an Advertisement available. Then it shall read the “&lt;strong&gt;CollectionID&lt;/strong&gt;” setting for this computer. If it contains a value it shall try to add the computer to this collection. If successful, wait for the advertisement to come available and hand over, if not show the wizard.&lt;/p&gt;
&lt;p&gt;OK, first thing we need is the CollectionID. How do we get this? We could use the Gather process to query the View “&lt;strong&gt;ComputerSettings&lt;/strong&gt;” based on the local MAC/UUID, etc. But this might cause problems as the Task Sequence which shall run later has a different priority for the Gather process. It might even be possible that it doesn’t query this computer specific view at all. And most built-in Properties are defined in the “First value wins” way meaning as soon as a property has a value assigned, it won’t be overwritten. &lt;/p&gt;
&lt;p&gt;Based on this, we need to be able to query a single setting. Roughly a year ago, I posted something about &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2008/12/25/set-or-get-a-single-value-from-mdt.aspx" target="_blank"&gt;Set or Get a single Setting from the MDT Database&lt;/a&gt;. The mentioned Stored Procedure and Webservice Function is part of &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;the Deployment Webservice&lt;/a&gt; so let’s make use of it. We just need to add a couple lines to your SCCM_Bootstrap.ini file to get the necessary values:&lt;/p&gt;&lt;pre&gt;&lt;font face="Consolas"&gt;[Settings] &lt;br /&gt;Priority=Default,&lt;strong&gt;UpdateComputer,GetCollectionID&lt;/strong&gt; &lt;br /&gt;Properties=AssignedSite,MDTID,Type,Setting,CollectionID &lt;/font&gt;&lt;br /&gt;&lt;br /&gt;
&lt;font face="Consolas"&gt;[Default] &lt;br /&gt;SkipWizard=NO &lt;br /&gt;AssignedSite=XXX &lt;br /&gt;Type=C &lt;br /&gt;Setting=CollectionID&lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;&lt;font face="Consolas"&gt;… &lt;br /&gt;&lt;br /&gt;[UpdateComputer] &lt;br /&gt;WebService=http://YourWebserver/YourWebserviceDir/MDT.asmx/UpdateComputer &lt;br /&gt;Parameters=SerialNumber,AssetTag,MacAddress,UUID,Description &lt;br /&gt;SerialNumber=SerialNumber &lt;br /&gt;AssetTag=AssetTag &lt;br /&gt;MACAddress=macAddress &lt;br /&gt;UUID=UUID &lt;br /&gt;ComputerName=Description &lt;br /&gt;MDTID=int &lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;&lt;font face="Consolas"&gt;[GetCollectionID] &lt;br /&gt;WebService=http://YourWebserver/YourWebserviceDir/MDT.asmx/GetSetting &lt;br /&gt;Parameters=MDTID,Type,Setting &lt;br /&gt;CollectionID=string&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And a minor change in the ZTIMediaHook.wsf file is necessary as we want to skip the wizard if a CollectionID has been pre-staged. Replace&lt;/p&gt;&lt;pre&gt;&lt;font face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If Not&lt;/span&gt; HasOSDAdvertisement &lt;span class="kwrd"&gt;Then &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment"&gt;&amp;#39; Show Wizard&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sCmd = &lt;span class="str"&gt;&amp;quot;MSHTA.exe &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt; &amp;amp; oUtility.ScriptDir &amp;amp; &lt;span class="str"&gt;&amp;quot;\Wizard.hta&amp;quot;&amp;quot; /definition:CustomBootWizard.xml&amp;quot; &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RunAndLog sCmd, true &lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;&lt;font face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment"&gt;&amp;#39; Process result from Wizard if requested &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If&lt;/span&gt; oEnvironment.Item(&lt;span class="str"&gt;&amp;quot;WizardComplete&amp;quot;&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;&amp;quot;Y&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;User has canceled the wizard. Exiting!&amp;quot;&lt;/span&gt;, LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Exit Function&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Else&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;Computer has already an Advertisement. Skipping Wizard.&amp;quot;&lt;/span&gt;, LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Exit Function&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;with the following snippet:&lt;/p&gt;&lt;pre&gt;&lt;font face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If Not&lt;/span&gt; HasOSDAdvertisement &lt;span class="kwrd"&gt;Then &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If&lt;/span&gt; oEnvironment.Item(&lt;span class="str"&gt;&amp;quot;CollectionID&amp;quot;&lt;/span&gt;) = &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment"&gt;&amp;#39; Show Wizard &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sCmd = &lt;span class="str"&gt;&amp;quot;MSHTA.exe &amp;quot;&amp;quot;&amp;quot; &lt;/span&gt;&amp;amp; oUtility.ScriptDir &amp;amp; &lt;span class="str"&gt;&amp;quot;\Wizard.hta&amp;quot;&amp;quot; /definition:CustomBootWizard.xml&amp;quot; &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RunAndLog sCmd, true &lt;/font&gt;&lt;br /&gt;
&lt;br /&gt;&lt;font face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment"&gt;&amp;#39; Process result from Wizard if requested &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If&lt;/span&gt; oEnvironment.Item(&lt;span class="str"&gt;&amp;quot;WizardComplete&amp;quot;&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;&amp;quot;Y&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;User has canceled the wizard. Exiting!&amp;quot;&lt;/span&gt;, LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Exit Function &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Else &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;CollectionID has been pre-staged. Skipping Wizard&amp;quot;&lt;/span&gt;, LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Else&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;Computer has already an Advertisement. Skipping Wizard.&amp;quot;&lt;/span&gt;, LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Exit Function&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;The &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26315" target="_blank"&gt;example files for the Custom Boot Wizard&lt;/a&gt; have been updated with these changes. They just lack the bold &lt;strong&gt;“,UpdateComputer,GetCollectionID”&lt;/strong&gt; part, as it requires that the webservice is working and that you added this custom setting to the database. So on default it will ignore this. To enable this, just add the bold part to the SCCM_Bootstrap.ini. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;OK, great. We were able to create a custom Setting and immediately use it in our Custom Boot Wizard. If that isn’t a good start into the new week. Feel free to to contact me with your feedback and comments. Also be sure to get back to this Blog. There are more things coming.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;u&gt;Note:&lt;/u&gt; There is a small bug in the current Beta of the MDT Web FrontEnd when adding the mentioned Custom Settings. It will add the custom setting to the Database, but it will not update all Views like “ComputerSettings” (It’s actually an odd behavior of the SQL Server not updating SELECT * …” views and not really a bug in the FrontEnd but we have to deal with it ;-) ). The example showed in this post will work anyway. Find an update for the current Beta Release of the Web FrontEnd on the &lt;a href="http://mdtwebfrontend.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35756" target="_blank"&gt;Download page&lt;/a&gt;. It’s&amp;nbsp; basically an Update for an existing Stored Procedure. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;The following How Tos have been published so far:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx"&gt;How To restrict access to the Deployment Database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx"&gt;How To configure what a User can see and edit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;How To handle Custom Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx"&gt;How To create custom Lists to select pre-defined values for a setting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx"&gt;How To handle MDT Applications in the FrontEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx" target="_blank"&gt;How To handle SCCM packages&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=144718" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Webservice/default.aspx">Webservice</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Boot+Wizard/default.aspx">Boot Wizard</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2010/default.aspx">MDT 2010</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx">How To</category></item><item><title>MDT Web FrontEnd – How To configure what a User can see and edit</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx</link><pubDate>Mon, 25 Jan 2010 08:05:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:144525</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=144525</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx" target="_blank"&gt;the last Post&lt;/a&gt; I showed you how you can use the MDT Web FrontEnd to restrict access to the MDT Deployment database. Following this you are able to restrict e.g. a Helpdesk User to only add and edit computers but that he/she can’t do anything else on Locations, Roles or MakeModels. But everybody who has access to the Settings of an Identity will still be able to see and maybe also change all Settings. &lt;/p&gt;
&lt;p&gt;This raises several problems. A User might still be able to see more then he is supposed to see. He/she might even be able to change some settings he/she shall just be able to see. Or a User might simply be overwhelmed by the pure amount of available settings. MDT 2010 has at least 215 different settings after the base installation and even experienced MDT Users are sometimes a bit lost finding the proper setting to achieve the desired result. A lot of these settings apply only in specific circumstances (e.g. server specific. LTI specific, etc.), some are even deprecated. Additionally all custom settings are simply added to the last section of the whole list of settings if using MDT 2010. In MDT 2008 it wasn’t even possible to show custom settings without rewriting the Deployment workbench.&lt;/p&gt;
&lt;p&gt;This said, wouldn’t it be nice to be able to create different subsets of these settings, reorder or re-categorize them? How about even renaming them or making only some of them writable? Or mixing custom with original Settings?&lt;/p&gt;
&lt;p&gt;All this is possible with the MDT Web FrontEnd. Let’s have a look on how this can be accomplished:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Settings&lt;/h3&gt;
&lt;p&gt;A Setting is the basic piece in this concept. A single setting always references a column in the Settings table of the original MDT Deployment Database. No matter if it is an original or a custom setting. Each setting has a Name and can have an additional Description (The description will be shown when the Mouse hovers the setting in the FrontEnd). Additionally you can define if a setting shall be “&lt;strong&gt;ReadOnly&lt;/strong&gt;”, meaning even if the User has the “&lt;strong&gt;Change&lt;/strong&gt;” permission to all Settings he/she will still only be able to see this setting, but not be able to edit it. Some settings require specific values like “&lt;strong&gt;YES&lt;/strong&gt;”, “&lt;strong&gt;NO&lt;/strong&gt;”, “&lt;strong&gt;Y&lt;/strong&gt;”, “&lt;strong&gt;ALL&lt;/strong&gt;”, “&lt;strong&gt;TRUE&lt;/strong&gt;”, “&lt;strong&gt;FALSE&lt;/strong&gt;”, etc. Entering wrong values or even the right value in the wrong format can cause troubles when MDT tries to interpret the stored values. &lt;/p&gt;
&lt;p&gt;Here a screenshot from the FrontEnd showing how you can create a “&lt;strong&gt;Setting&lt;/strong&gt;” to be used in the FrontEnd. You will see that the FrontEnd has a couple predefined “&lt;strong&gt;Types&lt;/strong&gt;” you can configure for a setting. “&lt;strong&gt;Text&lt;/strong&gt;” will just end up as a simple Textbox, “&lt;strong&gt;Password&lt;/strong&gt;” will also be a Textbox but not showing the individual characters of the text typed, &lt;strong&gt;TimeZone&lt;/strong&gt; and &lt;strong&gt;TimeZoneName&lt;/strong&gt; will show a Dropdown box with all Timezones and put the appropriate value into the database. “&lt;strong&gt;YesNo&lt;/strong&gt;”, “&lt;strong&gt;YesNoAll&lt;/strong&gt;” and “&lt;strong&gt;TrueFalse&lt;/strong&gt; will also end up as DropDown boxes. This ensures that a User can’t type in the wrong values. There are more types to come i future releases, especially for the Localization part which can be quite complicated as it even depends on the Target OS what exact value to choose.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_494BF9A8.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_6FB9EEC1.png" width="897" height="138" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Categories&lt;/h3&gt;
&lt;p&gt;Before I can show you how to actually configure the Settings we first need to have a look on Categories. A Category is a container for one or several Settings. You have seen these categories already when using the Deployment Workbench like “&lt;strong&gt;Domain and Workgroup&lt;/strong&gt;”, “&lt;strong&gt;Identification&lt;/strong&gt;” or “&lt;strong&gt;Display Settings&lt;/strong&gt;”. But these were predefined and fixed. With the FrontEnd, you can create your custom Categories if necessary. You can edit existing categories, meaning adding new settings to a category, removing or reorder existing settings and even change them. The screenshot above shows how you could use the Setting “&lt;strong&gt;OSDComputerName&lt;/strong&gt;” but give it a more meaningful name for the user.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Groups&lt;/h3&gt;
&lt;p&gt;Finally we have Groups. A Group contains one or several Categories. This is so to speak the container for a full set (&lt;em&gt;or Group ;-)&lt;/em&gt; ) of settings. The FrontEnd contains two default Groups “&lt;strong&gt;MDT 2008 Default&lt;/strong&gt;” and “&lt;strong&gt;MDT 2010 Default&lt;/strong&gt;”. These have been pre-configured with all Settings of MDT 2008 and MDT 2010 and create an identical look to the Deployment Workbench of each version (Yes the FrontEnd will work with both versions). So you might want to have a look on the existing configuration first before you start to create your custom views. A category can be used in several Groups. e.g. the pre-defined “&lt;strong&gt;Display Settings&lt;/strong&gt;” category is used in both default Groups. But be aware, if you change something in this Category, it will affect all Groups this Category is used. So you might need to add a new category instead of changing one.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;An Example&lt;/h3&gt;
&lt;p&gt;OK, let’s assume we have a couple of Helpdesk guys/1st Line supporters. They regularly set up new computers and also schedule re-images of existing computers that experience errors which would involve more time fixing the issue instead of just re-imaging the existing machine (assuming our standard image is well tested and we have a good mapping between installed applications and the standard applications we install on-the-fly).&lt;/p&gt;
&lt;p&gt;These guys typically don’t need a lot of settings. As this is an example, we will even keep it more simple. So what do we want to make them available? Let’s say &lt;/p&gt;
&lt;p&gt;- Computername (we assume it can’t be auto generated) &lt;br /&gt;- User Data Share and User Data Directory (point to different place in case of replacements) &lt;br /&gt;- Timezone&lt;/p&gt;
&lt;p&gt;That should be enough to show the concept. Let’s start with the Computername. With MDT 2010 the formerly used (and still available) setting “&lt;strong&gt;ComputerName&lt;/strong&gt;” has been deprecated. The setting we should use is “&lt;strong&gt;OSDComputerName&lt;/strong&gt;”. Sure it’s easy to tell somebody to use this field if he/she needs to set the name of a computer. But wouldn’t it be better to still call it “&lt;strong&gt;Computername&lt;/strong&gt;” in the FrontEnd and store the information into the appropriate setting in the database? OK, the FrontEnd will be able to do this. Let’s see how we accomplish that. &lt;/p&gt;
&lt;p&gt;As mentioned already, we need to have a Category to logically group those settings. We just create a new Category and call it “&lt;strong&gt;Helpdesk Settings&lt;/strong&gt;” (&lt;em&gt;not fancy but should work ;-)&lt;/em&gt; ). To do this open the FrontEnd, click on the “&lt;strong&gt;Settings&lt;/strong&gt;” tab and then on the “&lt;strong&gt;Categories&lt;/strong&gt;” tab (&lt;em&gt;this feature is so powerful that it got it’s own area :-)&lt;/em&gt; ). You will see a list of available Categories that is already quite long due to the default groups for MDT 2008 and MDT 2010. Anyway, click on “&lt;strong&gt;Add Category&lt;/strong&gt;” and now give it a Name and Description.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_275BC17E.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_11DDC07C.png" width="432" height="215" /&gt;&lt;/a&gt; &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1446A6A0.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_41F423CB.png" width="320" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After saving you will see the new Category. At the bottom of this you will find the mask to add new settings to this Category. The first Dropdown list contains a list of all available settings from the MDT Deployment Database. It will also include all Custom Settings you might have added (the FrontEnd will even give you the possibility to create new custom Settings without touching the Database. This will be shown in the next How-To). Now select the “&lt;strong&gt;OSDComputerName&lt;/strong&gt;” from the list. Next we want to give it a more user-friendly name. We call it “&lt;strong&gt;Computer name&lt;/strong&gt;”. The Description will be shown to the User, when hovering with the mouse over the field. That said we should always give some useful information. Let’s type “&lt;strong&gt;The new computer name to assign to the computer&lt;/strong&gt;”. It’s a default field for simple text, so keep the “&lt;strong&gt;Type&lt;/strong&gt;” on the default “&lt;strong&gt;Text&lt;/strong&gt;” and don’t check the “&lt;strong&gt;ReadOnly&lt;/strong&gt;”. Save your changes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1D8EF3AF.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_3250C662.png" width="793" height="110" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now we do the same for all the other settings we have mentioned before. You will notice, that the OSDComputerName is no longer available in the list of settings. Choose &lt;strong&gt;UDShare&lt;/strong&gt;, call it e.g. “&lt;strong&gt;User Data Share&lt;/strong&gt;” with a Description of e.g. ”&lt;strong&gt;The UNC path to the User Data&lt;/strong&gt;”. Keep it as “&lt;strong&gt;Text&lt;/strong&gt;” and save. Choose &lt;strong&gt;UDDir&lt;/strong&gt;, call it e.g. “&lt;strong&gt;User Data Directory&lt;/strong&gt;” with a Description of e.g.&amp;nbsp; “&lt;strong&gt;Directory that contains the User Data&lt;/strong&gt;”. Again keep it as “&lt;strong&gt;Text&lt;/strong&gt;” and save. Finally the Timezone. As we only deploy Windows 7 we use the setting “&lt;strong&gt;TimeZoneName&lt;/strong&gt;” for this (Use “&lt;strong&gt;TimeZone&lt;/strong&gt;” for XP). So choose it from the list of available settings, Give it the name “&lt;strong&gt;Timezone&lt;/strong&gt;” with a Description of “&lt;strong&gt;The&lt;/strong&gt; &lt;strong&gt;timezone of the computer&lt;/strong&gt;” and now choose “&lt;strong&gt;TimeZoneName&lt;/strong&gt;” from the “&lt;strong&gt;Type&lt;/strong&gt;” Dropdown list. When later editing this setting, the FrontEnd will automatically show a Dropdown list of available Timezones. Click save and we have finished your new (&lt;em&gt;simple&lt;/em&gt;) category:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_0821187A.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_7D539B57.png" width="791" height="377" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The only option we haven’t used in this example is “&lt;strong&gt;ReadOnly&lt;/strong&gt;”. When creating a Setting as “&lt;strong&gt;ReadOnly&lt;/strong&gt;” it will be shown to the user, but he/she won’t be able to change it, even when editing the other settings. This will be helpful if you want to give them an easy way to look for an information already configure in the database, let’s say a password, network location, etc. but only a very small group of users shall be able to really change this value (&lt;em&gt;those user would then have a different Group assigned to their Access Role&lt;/em&gt;). &lt;/p&gt;
&lt;p&gt;You can change a category at any time and the changes will be available to the users instantly after you saved the changes on the next request of a page. You can add or delete settings, re-order them by simple Drag-And-Drop operations and you can change the name and description shown to the user. To change a setting, you would need to delete it first and then re-create it with the different configuration. The possibility for direct editing might be added later to the FrontEnd.&lt;/p&gt;
&lt;p&gt;Ok, let’s finish this. We now have our Category. To be able to use it, we need to add this Category to a Group (&lt;em&gt;yes, even if we have only one Category&lt;/em&gt;). So click on the “&lt;strong&gt;Settings&lt;/strong&gt;” tab (&lt;em&gt;if you have opened a different page in the meantime&lt;/em&gt;) and then click on “&lt;strong&gt;Groups&lt;/strong&gt;”. You will see a list of available Groups. We want to create a new one, so click on “&lt;strong&gt;Add Group&lt;/strong&gt;” and call it e.g. “&lt;strong&gt;Helpdesk Users&lt;/strong&gt;” with a Description of “&lt;strong&gt;Settings for Helpdesk Users&lt;/strong&gt;”. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_15D312DB.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_7811881B.png" width="339" height="222" /&gt;&lt;/a&gt; &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_1A396DD5.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_00C144CE.png" width="266" height="221" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;After saving the changes we can add the Category by simply choosing it from the Dropdown list of all available Categories and “Save” it. Again, you can also edit any existing Group. All changes will be instantly available after saving the changes. You can add and remove Categories, you can re-order them and you can change the name and Description. As you can see on the screenshot you will also see all the settings available in each Category. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_07A0ABB9.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_2E5E9C2C.png" width="405" height="398" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The last thing we have to do is to tell the FrontEnd which Users shall use this Group. To do this, we assign this Group to an Access Role. Ok, let’s click on the “&lt;strong&gt;Admin&lt;/strong&gt;” Tab and then click on the “&lt;strong&gt;Access Roles&lt;/strong&gt;” tab. In the last post, we created an Access Role for “&lt;strong&gt;Computer Editors&lt;/strong&gt;”. Let’s assign the new “Helpdesk Users” Group to this Access Role. Click on the &lt;strong&gt;Edit&lt;/strong&gt;-Icon to edit the Access Role&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_3E7A3E58.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_77CCDCE8.png" width="244" height="222" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Now choose the “&lt;strong&gt;Helpdesk Users&lt;/strong&gt;” Group from the list of available Groups. You can also rename this Access Role to “&lt;strong&gt;Helpdesk Users&lt;/strong&gt;” if you like and save the changes.&lt;/p&gt;
&lt;p&gt;All Users with this Access Role assigned will now use this Group when querying or changing the settings. For demonstration purposes I just assigned this Role to me on a test installation. This is a screenshot from the Settings of a computer:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_3D898AA3.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_3F761805.png" width="227" height="296" /&gt;&lt;/a&gt; &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_396B0305.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_0B5D64B3.png" width="663" height="296" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The values shown might make more sense on the Settings for Roles or Locations instead for an individual computer but it shall show a concept and that the view a User get is restricted to what we have configured before. &lt;/p&gt;
&lt;p&gt;It can become a bit complicated when Users are member of different Access Roles but as long as only one Access Role is valid in the current context it shouldn’t be a problem. So it’s up to you how you define your structure to avoid conflicts. I prefer to have another AccessRole instead of assigning a User to to many different AccessRoles. Typically there aren’t so many different User Groups. But that also depends on the size of your deployment. Most implementations I’ve seen so far have less then a dozen different Access Roles. Often there are some common ones like ComputerEditors, LocationEditors, RoleEditors, plus some additional slightly specialized ones. But heavily used is the feature described in this How-To as the combination of required settings is always different.&lt;/p&gt;
&lt;p&gt;The combination of Access Roles and customized Groups is extremely powerful. It really ranges from Full Access for everyone to individual configuration per computer and user. But even more important everything in between. By creating a good access concept in advance you can increase the usability for users of different knowledge levels and also reduce the amount of possible errors. &lt;/p&gt;
&lt;p&gt;Find the &lt;a href="http://mdtwebfrontend.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=35756" target="_blank"&gt;Download of the current Beta Release of the MDT Web FrontEnd&lt;/a&gt; on &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;Codeplex&lt;/a&gt;. Also find more information about the topics described in this post &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;in the (still growing) Documentation&lt;/a&gt; especially in the section &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Managing%20Groups" target="_blank"&gt;Managing Groups, Categories and (Custom) Settings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Be sure to get back to this Blog regularly as there are more How-Tos coming. The next one will cover the handling of Custom Settings. Also don’t hesitate to send me your feedback and comments or to &lt;a href="http://mdtwebfrontend.codeplex.com/Thread/List.aspx" target="_blank"&gt;discuss new features or problems on Codeplex&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;The following How Tos have been published so far:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx"&gt;How To restrict access to the Deployment Database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx"&gt;How To configure what a User can see and edit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;How To handle Custom Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx"&gt;How To create custom Lists to select pre-defined values for a setting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx"&gt;How To handle MDT Applications in the FrontEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx" target="_blank"&gt;How To handle SCCM packages&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=144525" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2008/default.aspx">MDT 2008</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2010/default.aspx">MDT 2010</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx">How To</category></item><item><title>MDT Web FrontEnd – How To restrict access to the Deployment Database</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx</link><pubDate>Sun, 17 Jan 2010 16:53:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:144372</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=144372</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx#comments</comments><description>&lt;p&gt;The MDT Deployment Database is a great utility for your Deployments, no matter if you are using it in LTI or ZTI scenarios. &lt;a href="http://deployment.xtremeconsulting.com/2009/11/24/understanding-the-mdt-configuration-database-part-1/" target="_blank"&gt;Tim Mintner recently wrote an interesting article about what the Database is and why one should use it&lt;/a&gt;. If you use the Deployment console to access the database it has (at least) one major drawback, especially in larger Deployments. Out of the box, the console is the only way of accessing and changing the database (beside using the SQL Management Studio and making changes directly to the underlying tables.). But due to it’s “All or Nothing” approach, you have to give everyone who needs to be able to make changes to the database full access to all information. But you might want to restrict, what people are able to see and change. You might want to give the Helpdesk guys only access to the computer information. Or might want to restrict a local Site Administrator to the settings of the site(s) he/she is managing.&lt;/p&gt;
&lt;p&gt;This particular problem was one of the main reasons for the development of the &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt;. It is a web-based FrontEnd, giving you easy and customizable access to the MDT Deployment Database and will work without any changes to the original tables. After the installation (see the &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide" target="_blank"&gt;Installation Guide&lt;/a&gt; for more information) it will behave like the original Deployment console and give everyone who can access the website access to all settings. But it has a built-in security model you can use by extending the original MDT Deployment Database (see &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Extend%20Database&amp;amp;referringTitle=Installation%20Guide" target="_blank"&gt;Extending the database&lt;/a&gt; for more details). It just adds a couple of tables and stored procedures to the database without any changes to the original ones. So it will still be 100% compatible if you use the console to access the database. In this How-To I will now show you the concept on how the security model has been designed and how you can use these features to give your users and colleagues the access they need to do their job, without giving them the possibility to harm anything they shouldn’t even touch. &lt;/p&gt;
&lt;p&gt;OK, let’s start.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;The Security Concept&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Access Roles&lt;/h3&gt;
&lt;p&gt;The idea is to map the requirements of a specific access scenario into an “Access Role”. Each Access Role defines the access to either one specific type of Identities (Computer, MakeModel, Role or Location), or to all of them. Each Identity Type has certain areas like the Details, Settings, Packages, Administrators, etc. The Access Role now defines the Access Level for each of this different areas. The Access Level is quite simple. It’s either Read-Only, Full Access or no Access at all. &lt;/p&gt;
&lt;p&gt;Sounds a bit confusing? No problem. Let’s have a look on an example. We assume we have a couple of Users sitting in the Helpdesk. They regularly prepare new computers or schedule re-images on existing computers. So they shall be able to change some settings for the computer like the Computername, be able to add and remove predefined Roles, add or remove packages to the computer which shall be installed or add local Administrators in case a specific User needs to be a local Administrator. But they shall not be able to access anything besides Computers. So we open the Web FrontEnd and click on the “&lt;strong&gt;Admin&lt;/strong&gt;” Tab and then on the “&lt;strong&gt;Access Roles&lt;/strong&gt;” Tab to see a list of all existing Access Roles. After the installation there will be two pre-defined Access Roles “&lt;strong&gt;Default Access All&lt;/strong&gt;” which will give every User Full Access to everything. That mimics the usage of the console. Looking at the below screenshot you can see the security settings for each Access Role and also a column called “Default”. Default Access Roles will apply to every User who can access the website at all. Typically you have either one Default Access Role for all identities. Or you have one per Identity you want to give access to. Even if possible, you shouldn&amp;#39;t`t create several Default Roles for the same Identity. So the first thing you might want to do after a fresh installation of the FrontEnd is creating a new “Default” Access Role which fits to your needs. A “ReadOnly Example” that gives only Read access has also been supplied in the installation.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_18F7B50C.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_11F80287.png" width="804" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OK, we click on the “&lt;strong&gt;Add Access Role&lt;/strong&gt;” Button. In the following screen we can now create our new Access Role. We call it “&lt;strong&gt;Computer Editors&lt;/strong&gt;” (Or Helpesk, or whatever suits your needs), as this Role gives Full Access to all Computers only. Also supply a meaningful Description. Now we set the “&lt;strong&gt;Type&lt;/strong&gt;” to “&lt;strong&gt;Computer&lt;/strong&gt;” and set all Access Levels to “&lt;strong&gt;Change&lt;/strong&gt;” (The “&lt;strong&gt;Gateways&lt;/strong&gt;” area makes only sense for an Identity Type of “Location” but that shouldn’t matter for now). We don’t want to&amp;nbsp; make it “&lt;strong&gt;Default&lt;/strong&gt;”. The option “&lt;strong&gt;Groups&lt;/strong&gt;” defines what you can see and change if you click on the Settings Tab of an Identity. But this will be part of an additional How-To. So for now select the Group “&lt;strong&gt;MDT 2008 Default&lt;/strong&gt;” or “&lt;strong&gt;MDT 2010 Default&lt;/strong&gt;” depending on if you are using MDT 2008 or MDT 2010.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_27923B24.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_25090966.png" width="270" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then click on “&lt;strong&gt;Create&lt;/strong&gt;” and the Access Role will have been added to the list of Access Roles.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Access Role Assignments&lt;/h3&gt;
&lt;p&gt;We have now defined a new Access Role that will give somebody access to all areas of the configuration of a computer. Now we need to configure, what users shall be using this Access Role. Users can have several Access Roles assigned. And one Access Role can be assigned to several Users. An Access Role can either apply for all instances of an Identity Type (e.g. All Computers), or just for specific instances (e.g. Location “A”, “W” and “Z”). Based on this, we have the full flexibility from Full Access for Everyone down to single instance for a specific User only. And everything in between. You could even give each of your Users access to the configuration of his/her computer(s). This would probably be an administrative nightmare to keep up to date, but it’s up to you how to use it (Maybe someone will create a small script handling this assignments during logon of each User ;-) ). But let’s assign our new Access Role to a couple of User from the Helpdesk. In the list of Access Roles you can see an icon for the “Assignments” (&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/Members_0DFA882A.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="Members" border="0" alt="Members" src="http://myitforum.com/cs2/blogs/maikkoster/Members_thumb_14415EB8.png" width="26" height="26" /&gt;&lt;/a&gt; ) . Click on this Icon and you will see the list of all Users this Access Role has been assigned to and for what Instances (Either “All” or the specific instances):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_487587FE.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_4011B2A7.png" width="397" height="222" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now you can “&lt;strong&gt;Create a new Assignment&lt;/strong&gt;” using a 2-Step wizard. In the first step, you need to choose the User(s) you want to assign to the Access Role.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_2FB63AEE.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_09E0148B.png" width="294" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;the second Step is to choose the Instances this User/these Users shall be assigned to. It’s either “&lt;strong&gt;All&lt;/strong&gt;” for all current and future Instances or any number of current instances. If you need to create different combinations of Users and Instances, you need to run this wizard several times. Click on “&lt;strong&gt;Finish&lt;/strong&gt;” to apply these changes to the database and with immediate effect, the chosen user(s) will be able to access everything you defined before. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_07C315C2.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_1EA1E73E.png" width="279" height="390" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Users&lt;/h3&gt;
&lt;p&gt;As seen before, to be able to assign an &lt;strong&gt;Access Role&lt;/strong&gt;, you need to choose from a list of Users. Users can be added to the database on two ways. First, each User accessing any page of the FrontEnd will be added to the Database for future usage. (if the database hasn’t been extended this will be ignored by the FrontEnd. And NO, currently there is no usage logging integrated). So fastest way might be to ask the User to access the FrontEnd and after that just add the user to all the Access Roles he/she requires. You also might want to add the First and Lastname later to make it easier to identify them later. &lt;/p&gt;
&lt;p&gt;The second way is to manually add the User to the Database. To do this click on the “&lt;strong&gt;Admin&lt;/strong&gt;” Tab and then on the “&lt;strong&gt;Users&lt;/strong&gt;” Tab. You will see a list of all Users currently configured in the Database. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_6B35FE14.png"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_0EA27CAD.png" width="657" height="246" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;From here you can &lt;strong&gt;Add&lt;/strong&gt; new users or Edit/Delete existing ones and even see all the assignments, a specific user has. The most important part to know here is, that the FrontEnd assumes Active Directory authentication and will try to map the “Username” to the Username supplied by the Browser. So use “Domain\Logonname” as the value in Username if you use Active Directory. If you use a different authentication method it still should work, but most probably requires some more configuration. Also this is untested. &lt;/p&gt;
&lt;p&gt;&lt;u&gt;Note:&lt;/u&gt; All the mentioned configuration can only be done by a User who has been configured as Administrator (All users that have the checkbox “IsAdmin” checked). If you have just set up the FrontEnd, there won’t be any user, so no one would be able to configure the database as there isn’t any Administrator yet. To overcome this issue, the first User accessing any page of the FrontEnd after it has been set up will become an Administrator. All others will still be added to the database, but just as normal users.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I hope this guide gave you some insight on how you could handle different security requirements of your Deployments. The example itself is quite simple but should show you how to set this up yourself. The main recommendation is to first configure your “Default” access, meaning create one (or several if you need different “Defaults” per identity) Default Access Role that configures what everyone who is able to access this FrontEnd shall be able to see and do. This may vary between No Access at all up to Read access to everything or even Full control on some parts. Then identify the different requirements you have. Mostly you can group your users depending on the required access levels. E.g. Helpdesk access to all computers, Site Administrators access to their locations, Role Administrators to manage all Roles, etc. If a User has been assigned to different Access Roles he/she will have the highest access level configured. Meaning “No Access” does not overwrite any other access level currently assigned.&lt;/p&gt;
&lt;p&gt;If a user has more permissions effectively as he should have, there typically is a “default” Access Role giving this permission. So try to keep it as simple as possible, but as complex as necessary. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For more information please see &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=enhanced%20Security" target="_blank"&gt;Managing enhanced security features&lt;/a&gt; from the &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;MDT Web FrontEnd Documentation&lt;/a&gt;. If you have any suggestions or feedback, don’t hesitate to write a comment here or on Codeplex, start a discussion or just contact me. The FrontEnd is currently still in Beta, but already very stable. The first Release will be published soon and it’s already used in production in several environment. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The next How To will cover the creation of the before mentioned “Groups”. A quite powerful feature giving you even more flexibility on what you want to show to the User.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;The following How Tos have been published so far:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/17/mdt-web-frontend-how-to-restrict-access-to-the-deployment-database.aspx"&gt;How To restrict access to the Deployment Database&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/25/mdt-web-frontend-how-to-configure-what-a-user-can-see-and-edit.aspx"&gt;How To configure what a User can see and edit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/02/01/mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;How To handle Custom Settings&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/02/mdt-web-frontend-how-to-create-custom-lists-to-select-from-pre-defined-values-for-a-setting.aspx"&gt;How To create custom Lists to select pre-defined values for a setting&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/05/mdt-web-frontend-how-to-handle-mdt-applications-in-the-frontend.aspx"&gt;How To handle MDT Applications in the FrontEnd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2010/03/21/mdt-web-frontend-how-to-handle-sccm-packages.aspx" target="_blank"&gt;How To handle SCCM packages&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=144372" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2008/default.aspx">MDT 2008</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2010/default.aspx">MDT 2010</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/How+To/default.aspx">How To</category></item><item><title>Using a custom Boot wizard to boot known and unknown computers in SCCM and choose a Task Sequence to run – Step by Step</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/13/using-a-custom-boot-wizard-to-boot-known-and-unknown-computers-in-sccm-and-choose-a-task-sequence-to-run-step-by-step.aspx</link><pubDate>Wed, 13 Jan 2010 10:21:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:144222</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=144222</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2010/01/13/using-a-custom-boot-wizard-to-boot-known-and-unknown-computers-in-sccm-and-choose-a-task-sequence-to-run-step-by-step.aspx#comments</comments><description>&lt;p&gt;In some recent posts I wrote about how to create a custom boot wizard. During these posts I used an example which would be able to boot any known and unknown computer from SCCM, reads a list of available Collections having an OSD Task Sequence advertised to choose from, then drop the computer into one of these collections on the fly and wait until the Advertisement would be available for the computer before handing over to the Task Sequence engine which would then query the SCCM Server for an advertised Task Sequence and if available execute it. (See the links at the end of this post for reference)&lt;/p&gt;
&lt;p&gt;This was actually meant as an example but during the last couple of months I got regular requests asking to take this example, make some minor adjustments and just be able to use it without digging deep into the complete background as they don’t want to code their own, just make use of the existing one as it did exactly what they wanted to have.&lt;/p&gt;
&lt;p&gt;And as I have to admit, that it takes a lot of reading and some time to create your own, here is a (hopefully) simple guide on what it requires to get this running in your environment. As I wanted to create this as comprehensive as possible it is almost only text but it references other more detailed guides which also include screenshots. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Set up the webservice&lt;/h3&gt;
&lt;p&gt;- &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;Download the most recent version of the webservice from Codeplex&lt;/a&gt; (the webservice has been updated recently to Version 6)&lt;/p&gt;
&lt;p&gt;- Extract the content of the zip file into a folder on your webserver&lt;/p&gt;
&lt;p&gt;- Create a new application in IIS pointing to this folder&lt;/p&gt;
&lt;p&gt;- Create a new application pool with the security context of a User that has appropriate permission to SCCM to query for collections/Task Sequences/Advertisements, create new computers and be able to add them to collections. (If this User isn’t member of the local Admin Group which is probably the easiest way to avoid most security related problems, it needs to be at least member of the &lt;strong&gt;IIS_IUSRS&lt;/strong&gt; Group (&lt;strong&gt;IIS_WPG&lt;/strong&gt; on IIS6) and then this Group also needs additional Read permission on the &lt;strong&gt;web.config&lt;/strong&gt; file in your root Web folder)&lt;/p&gt;
&lt;p&gt;- configure the webservice to run within this new application pool&lt;/p&gt;
&lt;p&gt;- configure the application Settings&lt;/p&gt;
&lt;p&gt;(see &lt;a title="http://mdtcustomizations.codeplex.com/wikipage?title=Installation%20Guide" href="http://mdtcustomizations.codeplex.com/wikipage?title=Installation%20Guide" target="_blank"&gt;Deployment Webservice - Installation Guide&lt;/a&gt; for more detailed information including some screenshots of the before mentioned steps.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Prepare your Boot Image&lt;/h3&gt;
&lt;p&gt;- &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26315" target="_blank"&gt;Download the most recent Custom Boot Wizard files from Codeplex&lt;/a&gt; (the files have been updated for this article)&lt;/p&gt;
&lt;p&gt;- extract them to a temporary folder&lt;/p&gt;
&lt;p&gt;- Customize the file SCCM_Bootstrap.ini:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * replace YourWebserver/YourWebserviceDirectory with the server and path created above&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Set the default AssignedSite (The wizard will overwrite this value if it gets a more appropriate AssignedSite for the client it is running on, based on the boundaries)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Optionally use a built-in feature to enable the support to prestage the target Collection for specific computers, using the MDT Web FrontEnd. See &lt;a href="http://mdt-web-frontend-how-to-handle-custom-settings-properties.aspx"&gt;MDT Web FrontEnd - How To handle Custom Settings/Properties&lt;/a&gt;&amp;nbsp;for more Details. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * save your changes&lt;/p&gt;
&lt;p&gt;- Create a new folder which will be used to store all additional files and folders we would like to add to the Boot image. Beneath create a folder called “Deploy” and beneath that a folder called “Scripts”. Now copy all your files from the temporary folder above into the “Scripts” folder. &lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Tip:&lt;/strong&gt;&lt;/u&gt; On the Root of the Folder which stores the additional files and folders we just created above, create a subfolder “Windows” and beneath that “System32”. Copy your favorite Troubleshooting tools like &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=948e477e-fd3b-4a09-9015-141683c7ad5f" target="_blank"&gt;Trace32&lt;/a&gt; into the System32 folder. After creating the new MDT Boot image all these tools will be available out of the box when doing some troubleshooting. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_4A2C4231.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_28CC9C95.png" width="162" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;u&gt;&lt;strong&gt;Tip 2&lt;/strong&gt;&lt;/u&gt;: Jason Scheffelmaer just posted a smart way to store all the Wizard files on a network share and just load them on-the-fly. This way you don&amp;#39;t need to update your Boot images every time you need to make changes to your scripts. So I really recommend having a look on &lt;a href="http://myitforum.com/cs2/blogs/jscheffelmaer/archive/2010/02/11/moving-the-mdt-wizard-off-your-boot-disk.aspx" target="_blank"&gt;Moving the MDT Wizard off your boot disk&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Create a new MDT Boot image using the ConfigMgr console and make sure you enable the “Add media hook files to enable the Deployment Wizard for this boot media” option and also add the path to the Directory we just created for our additional files as an “Extra directory to add:”&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_07D929EE.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_5913714B.png" width="470" height="141" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Make it available&lt;/h3&gt;
&lt;p&gt;- First, if you don’t have them, create (at least) one collection per OS you would like to deploy and advertise an OSD Task Sequence. Preferably set the Advertisement to mandatory and make sure you check the “Make this task sequence available to boot media and pxe”. You need to do this per Primary Clients are assigned to.&lt;/p&gt;
&lt;p&gt;- Hide additional Collections with advertised OSD Task Sequences (testing, etc) from the wizard by adding the word “&lt;strong&gt;Hidden&lt;/strong&gt;” to the Comment of the Collection.&lt;/p&gt;
&lt;p&gt;Later the wizard will query for all Collections with an OSD Task Sequence assigned and show them as a list you can choose from. So make sure you give it a useful name. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The following steps are only necessary if you want to use PSP to boot the computers. You can skip it if you use a Boot CD/DVD/USB Stick&lt;/p&gt;
&lt;p&gt;- Create a new “Custom” Task Sequence called “&lt;strong&gt;Boot Wizard only&lt;/strong&gt;”&lt;/p&gt;
&lt;p&gt;- Add a single “&lt;strong&gt;Apply Operating System&lt;/strong&gt;” step&lt;/p&gt;
&lt;p&gt;- &lt;strong&gt;Disable&lt;/strong&gt; this newly added step!&lt;/p&gt;
&lt;p&gt;- Configure the Task Sequence to use the Boot Image from the last section and limit it to run only on Windows 2000, XP 64Bit or any other OS which isn’t used within your environment.&lt;/p&gt;
&lt;p&gt;(We now have a OSD Task Sequence we can use to PXE-boot a computer but it is not able to actually do anything.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Advertise the “&lt;strong&gt;Boot Wizard only&lt;/strong&gt;” Task Sequence to the “&lt;strong&gt;Unknown computers&lt;/strong&gt;” collection (you don’t have an unknown computer collection? Upgrade to SCCM R2 ;-) ). Don’t make it mandatory. Add the word “&lt;strong&gt;Hidden&lt;/strong&gt;” somewhere to the Comment. This ensures that the wizard will not recognize this Advertisement as a valid OSD Advertisement.&lt;/p&gt;
&lt;p&gt;- Advertise the “&lt;strong&gt;Boot Wizard only&lt;/strong&gt;” Task Sequence to the “&lt;strong&gt;All Systems&lt;/strong&gt;” collection. &lt;strong&gt;Don’t&lt;/strong&gt; make it mandatory. And again add the word “&lt;strong&gt;Hidden&lt;/strong&gt;” somewhere to the Comment of the Advertisement to “hide” it from the webservice. (The word “Hidden” ensures that the webservice function “HasOSDAdvertisement” does not recognize these advertisements as valid OSD Advertisements. This function is called by the wizard during the initialization and it will stop the wizard from showing up if a valid OSD Advertisement has been found as it assumes that a valid OSD Advertisement has precedence over choosing an additional one.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You fear advertising something to &lt;strong&gt;All Systems&lt;/strong&gt;? You are right, everybody will tell you to never advertise something to &lt;strong&gt;All Systems&lt;/strong&gt;. It is not recommended and can be very dangerous. And I totally agree, it can become very funny if you make a mistake. But the Task Sequence we advertise isn’t able to do anything. It does not contain any valid step and it can also only run on Windows 2000 machines (or whatever you configured before). You can also use the “All Workstations” or something similar. Beside this slightly dangerous way, there are two more options which enable you to PXE boot known computers in SCCM. You can either delete the computers from SCCM before booting (actually making them “&lt;strong&gt;unknown&lt;/strong&gt;” ;-) ) or using a different PXE Server (or WDS without the PSP Role). Not using the PSP Role is working quite well, I favorite this solution as it gives you far more flexibility on PXE Booting (you can add additional Boot images like Recovery images or Virusscanning, etc), but it works only well if you have only very few sites as it takes some additional handwork to get those images running and even more to keep them updated. This guide assumes a certain scenario so it’s up to you choosing a different way as it is just one possible way to achieve the required result. The presented solution will work in most environments and has been used and tested in small to large environments. But as always, you are doing this on your own risk.&lt;/p&gt;
&lt;p&gt;Please don’t hesitate to send me any problem or question you might have implementing this. Also suggestions for improving or any other feedback is highly appreciated even if commenting on MyITForum Blogs is a bit restricted ;-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you want to dig a bit deeper into this topic or need some more details, here some links to former posts about the custom boot wizard:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/04/01/create-your-custom-boot-wizard-some-advanced-stuff.aspx" target="_blank"&gt;Create your custom Boot Wizard - some advanced stuff&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/04/18/create-your-own-boot-wizard-display-dynamic-data.aspx" target="_blank"&gt;Create your custom Boot Wizard - Display dynamic data&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/04/18/create-your-custom-boot-wizard-execute-the-wizard-and-process-the-results.aspx" target="_blank"&gt;Create your custom Boot Wizard - Execute the Wizard, process the results and create the Boot image&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/04/18/create-your-custom-boot-wizard-make-it-available-for-all-known-and-unknown-computers.aspx" target="_blank"&gt;Create your custom Boot Wizard - Make it available for all known and unknown Computers&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Some of the information in these posts are targeted for MDT 2008. With MDT 2010 there are some changes you should be aware of or might need to use and extend your wizards:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/11/08/upgrading-your-custom-wizard-panes-to-mdt-2010-database-and-webservice-calls.aspx" target="_blank"&gt;Upgrading your custom wizard panes to MDT 2010 - Database and Webservice calls&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/08/28/making-custom-database-and-webservice-scripts-work-again-in-mdt-2010.aspx" target="_blank"&gt;Making custom Database and Webservice scripts work again in MDT 2010&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Also have a look on two CodePlex projects which you can use to extend your current MDT solution:&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://mdtcustomizations.codeplex.com/" target="_blank"&gt;MDT Customizations&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;- &lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;MDT Web FrontEnd&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=144222" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Webservice/default.aspx">Webservice</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Microsoft+Deployment/default.aspx">Microsoft Deployment</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/SCCM/default.aspx">SCCM</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Boot+Wizard/default.aspx">Boot Wizard</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT/default.aspx">MDT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Frontend/default.aspx">Frontend</category></item><item><title>IP Range Boundary format stored in Active Directory changed with SCCM 2007 SP2</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/16/ip-range-boundary-format-stored-in-active-directory-changed-with-sccm-2007-sp2.aspx</link><pubDate>Wed, 16 Dec 2009 09:27:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:143791</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=143791</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/16/ip-range-boundary-format-stored-in-active-directory-changed-with-sccm-2007-sp2.aspx#comments</comments><description>&lt;p&gt;OK, this is probably one of these articles that only a few people are interested in, but hey why not. The Internet is a mish-mash of information, so let’s add another piece to it ;-)&lt;/p&gt;
&lt;p&gt;As some of you might know, the &lt;a href="http://mdtcustomizations.codeplex.com/documentation" target="_blank"&gt;Deployment webservice&lt;/a&gt; is able to identify the SCCM site code and assigned site code for a computer by querying Active Directory which is actually a nice feature as this is easier to query than the SCCM SLP. Anyway since SP2 there has been (at least) one change in the way SCCM is storing the boundary information for IP Ranges in Active Directory. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;SCCM Boundaries in Active Directory&lt;/h3&gt;
&lt;p&gt;All SCCM related information is stored in the “&lt;strong&gt;System Management&lt;/strong&gt;” container that can be found within the “&lt;strong&gt;System&lt;/strong&gt;” container in Active Directory. If you are using the “Active Directory Users and Computers” mmc you need to enable the “&lt;strong&gt;Advanced Features&lt;/strong&gt;” to be able to view them. I recommend using a tool like &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx" target="_blank"&gt;ADExplorer&lt;/a&gt; from SysInternals for this. &lt;/p&gt;
&lt;p&gt;SCCM boundaries can be defined in 4 different ways:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Active Directory Site&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Active Directory site boundary is stored in an object of the objectClass “&lt;strong&gt;mSSMSSite&lt;/strong&gt;”. There should be one of this object per SCCM Site defined and is typically named “SMS-Site-{SiteCode}” where {SiteCode} is the SCCM Site Code. The Active Directory site boundaries for each SCCM Site are stored in an attribute called “mSSMSRoamingBoundaries”&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IP Subnet&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Typically an IP subnet is defined as the IP Address with an associated subnet mask. SCCM calculates the Subnet ID from this which is the lowest IP Address in that range. This works quite well and is easy to manage if you use standard C-Class Subnets. Using a different subnet mask will work but sometimes behaves a bit “flaky”. Anyway, in Active Directory only this Subnet ID is stored. So to get the appropriate subnet ID of a specific IP Address you would need to make some assumptions on it. As said, this works well with C-Class subnets. &lt;/p&gt;
&lt;p&gt;This Subnet ID is also stored in the same “&lt;strong&gt;mSSMSRoamingBoundaries&lt;/strong&gt;” attribute as the Active Directory Site. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;IPv6 prefix&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It’s also possible to define the boundary with an IPv6 prefix. In case of having a prefix with IPv6 zero compression it will automatically be translated into the full IPv6 subnet format. So if you search for it depending on the IPv6 prefix of a computer make sure to also extend it to the full IPv6 subnet format. &lt;/p&gt;
&lt;p&gt;The IPv6 prefix is again stored in the same “&lt;strong&gt;mSSMSRoamingBoundaries&lt;/strong&gt;” attribute as the Active Directory Site and the IP Subnet. And yes, all of them can be mixed in this attribute&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IP address Range&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Here we finally have the boundary that changed with SP2. IP address ranges are defined by the lowest and highest IP address of a continuous range. They are stored in an Active Directory object with objectClass “&lt;strong&gt;mSSMSRoamingBoundaryRange&lt;/strong&gt;”. You will find one object per IP address range and it typically has a name of “SMS-{SiteCode}-{LowestIPAddress}-{HighestIPAddress}. Where {SiteCode} is the SCCM Site code and {LowestIPAddress}/{HighestIPAddress} are the Lowest/Highest IP addresses of the IP address range in its decimal format. The lowest and highest IP Address are also stored in two attributes of this object called “mSSMSRangedIPLow” and “mSSMSRangedIPHigh”. The IP addresses are stored again in decimal format. &lt;/p&gt;
&lt;p&gt;So far so good. With SCCM SP2 the values of the Attributes have changed (but this change applies only if you create an new IP address range boundary after you installed SP2). Before they were identical to the {LowestIPAddress}/{HighestIPAddress} values used in the name. Now they suddenly turned into negative values and don’t seem to have any reference to the original IP Address. So what happened?&lt;/p&gt;
&lt;p&gt;For some reason, SCCM now sets a 255.255.255.255 in front of each IP Address. Binary these are all 1’s now. The value in the Active Directory is stored as a Long value which means it can store a number of 8 Byte. Now we have the 4 Byte of the IP Address and another 4 Byte for the 255.255.255.255 what makes it a quite “huge” number. But as it is interpreted as a signed number, the first bit of the whole sequence will identify if it is a positive or negative number. And as we have a 1 at the very beginning (we actually have at least 32 ;-) ) it is now a negative value. &lt;/p&gt;
&lt;p&gt;How do we get around this? The easiest way is probably to just use the IP Value stored in the name. The second option is to add 4,294,967,296 if the value is negative to get the real value. (You can calculate this number as your homework :-) )&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SCCM Site information&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With the above information we are now able to get the appropriate boundary entry. And the object found should have an attribute called “mSSMSSiteCode”. With the Site code you can now look for the object named SMS-Site-{SiteCode} and this stores all the available information about the SCCM Site.&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=143791" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/SCCM/default.aspx">SCCM</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Active+Directory/default.aspx">Active Directory</category></item><item><title>Finding computer in Active Directory based on the netbootGuid</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/15/finding-computer-in-active-directory-based-on-the-netbootguid.aspx</link><pubDate>Tue, 15 Dec 2009 08:39:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:143731</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=143731</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/15/finding-computer-in-active-directory-based-on-the-netbootguid.aspx#comments</comments><description>&lt;p&gt;A couple weeks ago I got a question from a norwegian fellow. They prestage all computers in Active Directory based on their UUID and he wanted to be able to query AD to get the computer name for their Deployments. &lt;/p&gt;
&lt;p&gt;The UUID of a computer can be stored in the Active Directory property &lt;strong&gt;netbootGuid&lt;/strong&gt;. This property is e.g. also used by the RIS Deployment process. During a RIS Deployment it would be able to find an already existing computer object based on this property or create a new computer account with this property (WDS doesn’t use this property anymore). And I actually like the idea of being able to uniquely identify a computer without the need for another database. &lt;/p&gt;
&lt;p&gt;So even if not used that often these days I thought it might be worth to enable the webservice to handle GUID values in Active Directory. As this is not as easy as it sounds ;-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;What is a UUID?&lt;/h3&gt;
&lt;p&gt;A UUID (&lt;strong&gt;U&lt;/strong&gt;niversally &lt;strong&gt;U&lt;/strong&gt;nique &lt;strong&gt;ID&lt;/strong&gt;entifier) or GUID (&lt;strong&gt;G&lt;/strong&gt;lobally &lt;strong&gt;U&lt;/strong&gt;nique &lt;strong&gt;ID&lt;/strong&gt;entifier) is generally a 16-byte number typically written as a sequence of hexadecimal digits like {&lt;strong&gt;4C4C4544-0038-5310-804B-C4C04F31344A}&lt;/strong&gt;. It should, as the name implies, be unique. Sometimes the GUID is derived from some other values like Serial Number or MAC Address which could result in repetition but generally treat it as unique. The UUID of a computer is stored in the BIOS and can be read via WMI (e.g. use “wmic csproduct get uuid” to see the UUID of your computer). &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;UUID/GUID and the Active Directory&lt;/h3&gt;
&lt;p&gt;Active Directory is also using GUIDs for unique identification. Each object in Active Directory does have an &lt;strong&gt;objectGUID&lt;/strong&gt; attribute. As said already, computer objects can also have an attribute &lt;strong&gt;netbootGuid&lt;/strong&gt; which can store a UUID. But working with the UUIDs in Active Directory raises two problems:&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp; &lt;strong&gt;UUIDs are stored as an array of bytes&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To store a UUID in AD you would need to convert each pair of hexadecimal digits into the decimal value e.g. 4C=76 , 4C=76 , 45=69 , 44=68 …. and add each to an array. To get the value you need to do this the other way round and convert each byte into the hexadecimal value and concatenate it. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2.&lt;strong&gt; UUIDs are stored in a different order then displayed&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I skip the part about little-endian and big-endian on Intel based systems (see &lt;a href="http://en.wikipedia.org/wiki/Endianness" target="_blank"&gt;Wikipedia – Endianness&lt;/a&gt;). As the most important thing for you to know is, that the bytes stored in AD are a little bit “mixed up”. It will swap the byte order of the first three parts separated by the dash. Let me show you this on the example from above. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4C4C4544-0038-5310-804B-C4C04F31344A&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;would become&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;44454C4C-3800-1053-804B-C4C04F31344A&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Finding a computer based on the UUID&lt;/h3&gt;
&lt;p&gt;Taking everything together we heard so far we now can search for a computer using tools like &lt;a href="http://www.joeware.net/freetools/tools/adfind/index.htm" target="_blank"&gt;AdFind&lt;/a&gt;, dsquery or a custom script using ADSI. The necessary query string to find the computer with a netbootGUID from the example would look like&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(&amp;amp;(objectClass=computer)(netbootGuid=\44\45\4C\4C\38\00\10\53\80\4B\C4\C0\4F\31\34\4A))&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;That’s almost self-explanatory, isn’t it? ;-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you are using the .Net Framework (e.g. with Powershell) your life get’s a lot easier as with Version 3 of the .Net Framework it has built-in support for this conversion. Each System.GUID object now has a function called “ToByteArray()” which will not only convert each hex-value into a byte, it will also re-order the GUID appropriately. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;The easier way&lt;/h3&gt;
&lt;p&gt;Sure, all this can be scripted (and a lot of people have done this already. You will find a lot of published scripts for this on the internet) but I would prefer to be able to call a webservice during my Deployment and let it return the Computername if it exists already. And I really don’t want to deal with all this stuff described before. So as said already in the last post, the Deployment webservice has been just updated to Version 6 (Find the &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;Download on CodePlex&lt;/a&gt;) which now supports a wide variety of properties to work with. And it is now also capable of handling such UUIDs. So all you now need to do is getting the UUID from the BIOS (actually MDT will do this for you during the gather step and store it in the property “UUID”) and then call the webservice function GetComputerNameByNetbootGuid supplying the UUID. The result will be the computername if known or an empty string if not known. To do this, add the following section to your customsettings.ini&lt;/p&gt;&lt;pre&gt;&lt;p&gt;[Settings] &lt;br /&gt;Priority=Default, GetComputerNameByNetbootGuid &lt;/p&gt;
&lt;p&gt;[Default] &lt;/p&gt;
&lt;p&gt;[GetComputerNameByNetbootGuid] &lt;br /&gt;WebService=http://YourWebServer/DeploymentWebservice/AD.asmx/GetComputerNameByNetbootGuidParameters=UUID &lt;br /&gt;UUID=netbootGUID &lt;br /&gt;OSDComputerName=string&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/14/setting-the-computer-description-in-active-directory-during-mdt-deployments.aspx" target="_blank"&gt;In the last article&lt;/a&gt; we used a custom script to execute the webservice and set the Computer Description. In this example here we now don’t even need to call a script to parse the result and set the OSDComputername. MDT has some built-in logic which will automatically take the result (if any) and put it into the property &amp;quot;OSDComptuerName”. In our case the result is stored in the xml element “string”. The important line here is&lt;/p&gt;&lt;pre&gt;&lt;p&gt;OSDComputerName=string&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;This way of assigning webservice results directly to Properties will work for most common types. So there are (as always) different ways to achieve the same result, giving you always the flexibility to choose the most appropriate for your requirements.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Compressed Format&lt;/h3&gt;
&lt;p&gt;As we are speaking about UUIDs a small side note, there is another format of UUIDs you might hit from time to time, especially if dealing with UUIDs stored in the Registry which is the “compressed Format”. It is e.g. used to store the UpgradeCodes of Applications within the registry. This is even more fun as it completely reverses each character within the first three parts of the UUID and reverses each hex pair value within the last two parts. Taking the example&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4C4C4544-0038-5310-804B-C4C04F31344A&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;becomes&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4454C4C48300013508B44C0CF41243A4&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.hanselman.com/blog/" target="_blank"&gt;Scott Hanselman&lt;/a&gt; wrote a nice article about this (&lt;a title="http://www.hanselman.com/blog/CommentView.aspx?guid=4e93e0a7-7af9-4397-95dd-db013901e6ee" href="http://www.hanselman.com/blog/CommentView.aspx?guid=4e93e0a7-7af9-4397-95dd-db013901e6ee" target="_blank"&gt;BATCH FILE VOODOO: Determine if multiple (and which) versions of an MSI-installed Product are installed using UpgradeCode&lt;/a&gt;). In the article he also posted a small application from John Walker that can be used in your scripts to handle this conversion. The webservice itself has also a built-in function to do this conversion for you and which you could use in a customized version. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While writing this article (yes, I`m a bit slow sometimes ;-) ) I just saw that &lt;a href="http://blogs.technet.com/mniehaus/" target="_blank"&gt;Michael Niehaus&lt;/a&gt; also wrote a similar article about this (&lt;a title="http://blogs.technet.com/mniehaus/archive/2009/12/06/ris-style-naming-with-mdt-2010-use-a-web-service.aspx" href="http://blogs.technet.com/mniehaus/archive/2009/12/06/ris-style-naming-with-mdt-2010-use-a-web-service.aspx" target="_blank"&gt;RIS-style naming with MDT 2010: use a web service&lt;/a&gt;), so it seems a couple of people get regularly questioned with this topic. In his article he wrote a small webservice function (with source code ;-) ) which not only gives the computername back if the computer exists already, it will auto generate a computername if it does not exist based on some supplied parameters. Actually a quite nice idea and for the targeted problem more powerful then this simpler scenario. So make sure you also have a look on his article. &lt;/p&gt;
&lt;p&gt;As said already, I will also publish parts of the source code later and show you how to extend and change functions in there. This way you would be able to insert Michaels function into this more general based webservice. &lt;/p&gt;
&lt;p&gt;Find the most current bits of the &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;Deployment Webservice on Codeplex&lt;/a&gt;. And as always, if you have any comments, suggestions, feedback whatsoever just drop me a note.&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=143731" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Webservice/default.aspx">Webservice</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Active+Directory/default.aspx">Active Directory</category></item><item><title>Setting the Computer Description in Active Directory during MDT Deployments</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/14/setting-the-computer-description-in-active-directory-during-mdt-deployments.aspx</link><pubDate>Mon, 14 Dec 2009 17:55:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:143725</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=143725</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/14/setting-the-computer-description-in-active-directory-during-mdt-deployments.aspx#comments</comments><description>&lt;p&gt;A quite common question I got so far&amp;nbsp; is how one would be able to set or update the computer description in Active Directory during the Deployment or maybe also later using a logon script. I personally like to store some additional information about the computer itself in the description property like Asset Tag/Service Tag or the Date of the initial or latest build, the last logged on user, etc. This way this information is available for everybody using the Active Directory Users and Computers snap in or one can use tools like the &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=890cd06b-abf8-4c25-91b2-f8d975cf8c07" target="_blank"&gt;logparser&lt;/a&gt; or &lt;a href="http://www.joeware.net/freetools/tools/adfind/index.htm" target="_blank"&gt;AdFind&lt;/a&gt; to query for specific information. &lt;/p&gt;
&lt;p&gt;There are actually a lot of ways how to achieve this. You can use command line tools like dsmod or script everything in vbscript and a lot more. Powershell would also be a very good choice for this but as long as it is not available in WinPE it will only be second choice. As I like command line tools and custom scripts for all the stuff which vary often, I like to have common or often used scenarios implemented as easy as possible. Especially during Deployments and when running scripts in System context I prefer to use webservices. I don’t need to take care about the specifics of the local computer (32/64 Bit, Server, Old client OS, logged on user, etc). All it requires is to be able to make an http request. And with &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;Version 6 of the Deployment Webservice&lt;/a&gt; you now got the possibility to set and read the computer description.&lt;/p&gt;
&lt;p&gt;OK, let’s start.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Get the computer description&lt;/h3&gt;
&lt;p&gt;The first thing we need is the computer Description itself. Generally there are three ways to get it. Manual, automatic or a combination of them. Actually the MDT wizard does already contain the necessary bits to be able to let the user manually enter a computer description. If you just open the “DeployWiz_Definition_ENU.xml” file and search for “Computer Description&amp;quot; you should end up at line 328 in MDT 2010 (or line 208 in MDT 2008). There you will see a part to enter a Computer Description which has been commented out on default. So if you would like to make this available just remove the “&amp;lt;!--“ and the following “--&amp;gt;” . Now if you run the wizard it will show the Computer Description field on the same pane where you normally enter the computer name. Also the built-in scripts will make sure that the computer description is now populated into a property called “&lt;strong&gt;Description&lt;/strong&gt;” which can be used during the rest of the Deployment&lt;/p&gt;
&lt;p&gt;The easiest automatic way is to use the “&lt;strong&gt;Set Task Sequence Variable&lt;/strong&gt;” step in a Task Sequence. To e.g. use the SerialNumber as Description (hey, this is just an example) you could create a Step like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_69D6091B.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_07D41710.png" width="412" height="281" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;If you need to have a more complex Description defined automatically, you most probably want to use a custom script to generate it. Let’s assume you want to store the Serial Number and the current Date in the Description. You could now create a small custom script which would do this for you. The function could look like&lt;/p&gt;&lt;pre&gt;&lt;p&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; sDescription &lt;br /&gt;&lt;br /&gt;
&lt;span class="comment"&gt;&amp;#39;Create Description &lt;/span&gt;&lt;br /&gt;sDescription = &lt;span class="str"&gt;&amp;quot;SN=&amp;quot;&lt;/span&gt; &amp;amp; oEnvironment.item(&lt;span class="str"&gt;&amp;quot;SerialNumber&amp;quot;&lt;/span&gt;) &lt;br /&gt;sDescription = sDescription &amp;amp; &lt;span class="str"&gt;&amp;quot; - BuiltDate=&amp;quot;&lt;/span&gt; &amp;amp; Date &lt;br /&gt;&lt;br /&gt;
&lt;span class="comment"&gt;&amp;#39;Store Description for future processing&lt;/span&gt; &lt;br /&gt;oEnvironment.Item(&lt;span class="str"&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;) = sDescription&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;Now you can add and execute this script at any point in your Task Sequence (preferably after the gather step and before you finally update the description in AD ;-) )&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_0C6A21CA.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_43D032F8.png" width="412" height="235" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;What you exactly need to store in the description and how you create it totally depends on your local needs. This shall just give you an idea on how to do it.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;Set Computer Description in Active Directory&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ok, we now have created the computer description. Time to get this information into Active Directory. In this example we will use a small script which will call the webservice function and submit the description. The information on how to reach the webservice is stored in the customsettings.ini. So let’s start with the customsettings.ini. We need to have a new section in there called “[SetComputerDescription]” (replace YourWebServer/DeploymentWebservice with the path to the webservice in your environment. I assume you already set up the Deployment Webservice and verified it is working):&lt;/p&gt;&lt;pre&gt;&lt;p&gt;[SetComputerDescription] &lt;br /&gt;WebService=http://YourWebServer/DeploymentWebservice/AD.asmx/SetComputerDescription &lt;br /&gt;Parameters=OSDComputerName, Description &lt;br /&gt;OSDComputerName=ComputerName &lt;br /&gt;Description=ComputerDescription&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now we create a small script that executes the webservice based on the information in this section. The main part looks like:&lt;/p&gt;&lt;pre&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment"&gt;&amp;#39; Create the web service instance&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Set&lt;/span&gt; oService = &lt;span class="kwrd"&gt;New&lt;/span&gt; WebService &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oService.iniFile = &lt;span class="str"&gt;&amp;quot;customsettings.ini&amp;quot;&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oService.SectionName = &lt;span class="str"&gt;&amp;quot;SetComputerDescription&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="comment"&gt;&amp;#39; Make the web service call &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Set&lt;/span&gt; oXML = oService.Query &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If&lt;/span&gt; oXML &lt;span class="kwrd"&gt;Is Nothing Then&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;Unable to call SetComputerDescription web service.&amp;quot;&lt;/span&gt;, LogTypeWarning &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;Else&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oXML.setProperty &lt;span class="str"&gt;&amp;quot;SelectionNamespaces&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;xmlns:mk=&amp;#39;http://maikkoster.com/Deployment&amp;#39;&amp;quot;&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;If UCase&lt;/span&gt;(oXML.SelectSingleNode(&lt;span class="str"&gt;&amp;quot;mk:boolean&amp;quot;&lt;/span&gt;).Text) = &lt;span class="str"&gt;&amp;quot;TRUE&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oLogging.CreateEntry &lt;span class="str"&gt;&amp;quot;Computer Description has been set.&amp;quot;&lt;/span&gt;, LogTypeInfo &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iRetVal = Success &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If&lt;/span&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span class="kwrd"&gt;End If&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;Now we add a new “Run Command Line” step to our TaskSequence that executes this script. It should be within the “State Restore” phase of the Task Sequence. If you are running MDT 2010 preferably after the “Recover from Domain” step as your computer might not have joined the domain yet so it could become hard setting the description ;-). The webservice will take care about that it connects to the local Domain Controller of the machine calling the webservice as the new account might not be available on all Domain Controllers yet, depending on how much time it had to replicated after joining the domain.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/maikkoster/image_48663DB2.png"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:inline;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-LEFT-WIDTH:0px;" title="image" border="0" alt="image" src="http://myitforum.com/cs2/blogs/maikkoster/image_thumb_1F7B28A9.png" width="413" height="232" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;OK, that’s it actually. Your are now able to set the computer description during a deployment. For your convenience all example scripts can be &lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=37245" target="_blank"&gt;downloaded from CodePlex&lt;/a&gt;. All you need is putting them into your Scripts folder, update the customsettings.ini with the section described above and add the necessary steps to your Task Sequence. If you would like to write (or read) other properties from Active Directory, get back to this blog regularly as a step-by-step guide on extending the webservice for additional properties is coming soon.&lt;/p&gt;
&lt;p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=143725" width="1" height="1"&gt;</description></item><item><title>Update on the Deployment Webservice – Active Directory</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/14/update-on-the-deployment-webservice-active-directory.aspx</link><pubDate>Mon, 14 Dec 2009 14:36:57 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:143723</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=143723</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/12/14/update-on-the-deployment-webservice-active-directory.aspx#comments</comments><description>&lt;p&gt;The Deployment Webservice has started as a small project to handle some specific problems I had during Deployments and thought others might run into similar issues. Referring to the amount of downloads and comments I got so far about it it seems to be of some help. Some of you found quite interesting ways to make use of it like using the Active Directory site to map to the MDT location (instead of using Gateways), etc. But one of the most common things asked for is reading and writing specific properties in Active Directory. Especially &lt;strong&gt;computer description&lt;/strong&gt; or most recently the &lt;strong&gt;netbootGuid&lt;/strong&gt; property, or adding the computer to specific Groups as the membership if this groups would trigger other parts of the deployment. &lt;/p&gt;  &lt;p&gt;The Active Directory part of the webservice published so far was quite specific. So adding new functions to query for similar things turned into repetitive code. As a result of this I more ore less rewrote the complete Active Directory backend and made it more generic and flexible. It is now able to read and write almost any property of Computers, Users, Groups and OUs including GUIDs like netbootGuid. You can move objects to a different OU or even create and delete them. Get some generic information about the AD itself (Sites, Domains, etc) or the AD site for a specific IP Address, etc … &lt;/p&gt;  &lt;p&gt;A lot of additional logic has been implemented into the SCCM specific functions of the Active Directory integration. Especially getting the appropriate SCCM &lt;strong&gt;site code&lt;/strong&gt; / &lt;strong&gt;assigned site code&lt;/strong&gt; was a bit “flaky”. It is now able to interpret SCCM boundaries configured as &lt;strong&gt;IP Range&lt;/strong&gt;, &lt;strong&gt;AD Site&lt;/strong&gt; and &lt;strong&gt;IP Subnet&lt;/strong&gt;. The IP subnet part works best if you use C Class subnets only (which is generally recommended if using IP Subnets as boundaries) but it will also try to “guess” networks with other network masks. Currently it’s not able to use IPv6 for this. If someone has experience with this and would like to help me on implementing it into this please contact me. This might become interesting in the next couple of years.&lt;/p&gt;  &lt;p&gt;The tracing has been extended so if you enable it in the web.config (&lt;a title="http://mdtcustomizations.codeplex.com/wikipage?title=Webservice%20Troubleshooting&amp;amp;referringTitle=Deployment%20Webservice" href="http://mdtcustomizations.codeplex.com/wikipage?title=Webservice%20Troubleshooting&amp;amp;referringTitle=Deployment%20Webservice"&gt;Webservice Troubleshooting&lt;/a&gt;) it will now give you even more information on what it is doing, especially if something doesn’t work as expected. Just make sure you disable it when everything is working as expected as the logging is quite extensive and consumes some resources.&lt;/p&gt;  &lt;p&gt;I just published this Update of the Deployment Webservice (&lt;a href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;Version 6&lt;/a&gt;) on &lt;a href="http://mdtcustomizations.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;. Additionally I will soon publish the source code of the AD webservice (sry, but not the backend libraries ;-) ) and show you step-by-step how you can add or remove functions you are missing or which are specific to your environment. If you have something which you think could be useful for others too, just drop me a note or start a &lt;a href="http://mdtcustomizations.codeplex.com/Thread/List.aspx" target="_blank"&gt;discussion on the CodePlex&lt;/a&gt; page so that others can benefit from this. &lt;/p&gt;  &lt;p&gt;The Installation Guide has also been updated. One of the biggest problem so far was often the installation itself. There were also some minor changes to the configuration itself, so you won’t be able to just copy and paste the new version over the old version without some manual steps, but they were necessary to make it easier to handle.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Just to finish this post, here a list of Functions, which have been added to the webservice:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;AddComputerToGroup&lt;/strong&gt;: Adds a computer to a specific AD Group&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DoesComputerExist&lt;/strong&gt;: Checks if a computer with the specified computer name exists in Active Directory&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GetComputerDescription&lt;/strong&gt;: Returns the description of the computer&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GetComputerNameByNetbootGuid&lt;/strong&gt;: Returns the name of the computer with the specified netbootGuid. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GetComputerNetbootGuid&lt;/strong&gt;: Returns the netbootGuid of the computer&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GetGroupMembers&lt;/strong&gt;: Returns a list of Active Directory Group members with their distinguished name&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GetGrouMembersName&lt;/strong&gt;: Returns a list of Active Directory Group members with their name &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;GetOUs&lt;/strong&gt;: Returns a list of OUs within the specified Parent path and with the specified level of recursion&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;RemoveComputerFromGroup&lt;/strong&gt;: Removes the computer from the specified AD Group&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SetComputerDescription&lt;/strong&gt;: Sets the description of the Computer&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SetComputerNetbootGuid&lt;/strong&gt;:&amp;#160; Sets the netbootGuid property of the computer&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Additionally there are two more functions. But they are not “enabled” by default as they can harm your environment. To enable them, rename the file “ADExt.asm_ “ into “ADExt.asmx”:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SetComputerAttribute&lt;/strong&gt;: Sets the given attribute for a computer (Allows you to write/change any attribute on a computer)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;DeleteComputer&lt;/strong&gt;: Deletes a computer from Active Directory&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Find a complete list of all available functions at &lt;a title="http://mdtcustomizations.codeplex.com/wikipage?title=Webservice%20-%20Active%20Directory" href="http://mdtcustomizations.codeplex.com/wikipage?title=Webservice%20-%20Active%20Directory" target="_blank"&gt;Deployment Webservice - Active Directory related functions&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can find the &lt;a title="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" href="http://mdtcustomizations.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=26318" target="_blank"&gt;Download on CodePlex&lt;/a&gt; and also an updated &lt;a href="http://mdtcustomizations.codeplex.com/documentation" target="_blank"&gt;Documentation&lt;/a&gt; (still work in progress so might miss some parts)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Finally, this tool is provided “AS-IS” with no further warranties. I will not be liable for any damages.&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=143723" width="1" height="1"&gt;</description></item><item><title>Deploying Windows XP with MDT 2010</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/11/17/deploying-windows-xp-with-mdt-2010.aspx</link><pubDate>Tue, 17 Nov 2009 21:46:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:143037</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=143037</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/11/17/deploying-windows-xp-with-mdt-2010.aspx#comments</comments><description>&lt;p&gt;There are a lot of good guides and information about using the new Microsoft Deployment Toolkit (MDT) 2010 to deploy Windows 7 or to “Upgrade” from Windows XP to Windows 7. You have the Quick Start Guides in the MDT Documentation. You have some screen casts and training material like the &lt;a href="http://myitforum.com/cs2/blogs/maikkoster/archive/2009/11/09/the-deployment-cd-v2-0.aspx" target="_blank"&gt;Deployment CD&lt;/a&gt; and a lot of other pages explaining those steps.&lt;/p&gt;
&lt;p&gt;Even if Microsoft doesn’t really like to hear this, but out there is still a whole bunch of existing Windows XP Installations. Some of them might consider going to Windows 7 quite soon (soon in terms of within the next 12 months). And I personally like Windows 7 and think it is a very good replacement of Windows XP but let’s face it. A lot of companies will stay on Windows XP at least for a while. Yes it’s old but it is also quite stable. It’s well tested&amp;nbsp; running for several years supporting almost any recent and current hardware and if you don’t need one of the features only available in Windows 7 for Business reason a “Because it’s kewl” probably won’t convince your boss ;-)&lt;/p&gt;
&lt;p&gt;So you might come into the situation where you would need to support the Deployment of new computers with Windows XP and Windows 7, refreshing (and replace) computers running Windows XP and Windows 7 and be able to upgrade from XP to Windows 7 (using a Wipe and Load approach). &lt;/p&gt;
&lt;p&gt;And here is the best part. All this can be done out of the box with MDT 2010. All the scripts will work no matter if you deploy Windows XP or Windows 7 (yes, also Windows Vista ;-) ). And they have built-in logic to decide what to do depending on the current or future OS. If you just go through the supplied Guides and replace all parts of&amp;nbsp; Windows 7 with Windows XP you are quite good to go. OK, you might want to have a look on some MDT 2008 guides to dealing with some XP specifics but the general deployment will work. There is actually only one thing missing in the Documentation (Or better to say I wasn’t able to find it). And that’s the User State Migration Tool (USMT) Support for Windows XP. MDT 2008 used the Windows Automated Installation Kit (WAIK) 1.1 and with it USMT 3. USMT 3 supports the capture of User/Computer data from Windows 2000, Windows XP and Windows Vista and is able to restore it onto Windows XP and Windows Vista. Now MDT 2010 requires WAIK 2 which includes USMT 4. This added support for Windows 7 and some nice features like hardlinks or offline capture but it dropped the restore support for Windows XP. You can still capture from Windows XP (SP3!) but you can only restore on Windows Vista or Windows 7.&lt;/p&gt;
&lt;p&gt;But luckily the MDT Developers included support for USMT 3. The first thing you would need is to &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=799AB28C-691B-4B36-B7AD-6C604BE4C595&amp;amp;displaylang=en" target="_blank"&gt;download the Installation Files for USMT 3&lt;/a&gt;. You can also download them in the “Components” Node of the Information Center of the MDT 2010 Deployment Workbench. When downloaded just select them and click on the Browse Button to get the downloaded files. Then drop them in the “Tools” folder of MDT 2010. Preferably put the x86 msi file into the “x86” subfolder and the x64 msi into the “x64” subfolder. Use either directly the Tools Folder in your Deployment Share if it has been created already but you might also consider putting them into the “%ProgramFiles%\Microsoft Deployment Toolkit\Templates\Distribution\Tools” folder as this will be used as a Template for new Deployment Shares. During the deployment the scripts are now able to use USMT 3 and 4.&lt;/p&gt;
&lt;p&gt;The second thing is a bit more tricky. On default MDT 2010 will now only use USMT 3 if the Target OS defined in the Task Sequence is Windows XP and the Deployment Type is not Replace (it assumes you always “replace” a XP computer with a Windows Vista/Windows 7 computer) and the deployment hasn’t been started from SCCM.This said, in Litetouch&amp;nbsp;only a typical refresh scenario using the standard Client Task Sequence from MDT 2010 executed via LiteTouch.vbs from a Windows XP with Target OS Windows XP will use USMT 3. On SCCM it will simply use the assigned USMT Package. So in SCCM you only need to take care about this if you would like to be able to use USMT 3 and USMT 4 from the same Task Sequence which you should only consider if absolutely necessary. But it would be possible. &lt;/p&gt;
&lt;p&gt;However there is also a new Property in MDT 2010 called “USMT3”. If this is set to “YES” (e.g. hardcoded in the customsettings.ini) it will override this default behavior and always use USMT 3 except if the current OS is Windows 7. This is great if your default OS is Windows XP. But you need to be a bit careful if you start upgrading to Windows 7 as USMT 3 isn’t able to restore the Data on Windows 7. &lt;/p&gt;
&lt;p&gt;One way of handling this intermediate scenario where your default OS is still Windows XP but you already started the Windows 7 Deployment could be handled using the Deployment Database. In the customsettings.ini add the “USMT3=YES” to the “[Default]” section. Then set this section as last in the List of Priorities. This would take care that it will always default to USMT 3 if nothing else is set. Then you can have additional sections to query the Deployment Database for Computer or Location (or other) specific settings. If you now would like to configure a single computer or Location to be upgraded to Windows 7 you would simply set this property in the database to “NO” (&lt;a href="http://mdtwebfrontend.codeplex.com/" target="_blank"&gt;Need a handy FrontEnd for this?&lt;/a&gt;). During the Deployment this will be evaluated dynamically from the Gather process and as the property USMT3 has been configured as “First Value&amp;nbsp; Wins” (OK, it’s actually overwrite=False but it sounds better) it will only default to USMT 3 if no other value have been configured. Your cs.ini could now look like&lt;/p&gt;
&lt;p&gt;[Settings] &lt;br /&gt;Priority=…, ComputerSpecificSettings, …, LocationSpecificSettings, …, Default&lt;/p&gt;
&lt;p&gt;[Default] &lt;br /&gt;USMT3=YES &lt;br /&gt;…&lt;/p&gt;
&lt;p&gt;[ComputerSpecificSettings] &lt;br /&gt;SQLServer=…&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For sure there are several other ways to achieve this so take it as an example. After some time your default OS might turn into Windows 7 and you would need to swap the logic making NO the default but still giving you the possibility to set single Computers to YES and maintaining the possibility to still make Windows XP Deployments. &lt;/p&gt;
&lt;p&gt;Finally, if you need to support Windows XP and Windows 7 from one Deployment Share be sure to make heavy use of the new Folders feature. With MDT 2010 you can add as many folders as you like. Split everything up at least into OS and architecture and then create Selection Profiles to combine all the different Folders per OS/Architecture. This will help you keeping them separated from each other. There are&amp;nbsp; also some known issues with MDT 2010 you should be aware of. Johan Arwidmark just posted them on his Blog (&lt;a title="http://www.deployvista.com/Blog/JohanArwidmark/tabid/78/language/en-US/Default.aspx" href="http://www.deployvista.com/Blog/JohanArwidmark/tabid/78/language/en-US/Default.aspx"&gt;http://www.deployvista.com&lt;/a&gt;) so no need to repeat them again ;-)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;UDPATE:&lt;/strong&gt; Tim Minter just wrote a really great article about &lt;a title="Understanding USMT with MDT 2010" href="http://deployment.xtremeconsulting.com/2009/11/20/understanding-usmt-with-mdt-2010/" target="_blank"&gt;Understanding USMT in MDT 2010&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=143037" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/MDT+2010/default.aspx">MDT 2010</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/USMT/default.aspx">USMT</category><category domain="http://myitforum.com/cs2/blogs/maikkoster/archive/tags/Windows+XP/default.aspx">Windows XP</category></item><item><title>Final Beta of the MDT Web FrontEnd</title><link>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/11/11/final-beta-of-the-mdt-web-frontend.aspx</link><pubDate>Wed, 11 Nov 2009 10:55:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:142852</guid><dc:creator>maikkoster</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/maikkoster/rsscomments.aspx?PostID=142852</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/maikkoster/archive/2009/11/11/final-beta-of-the-mdt-web-frontend.aspx#comments</comments><description>&lt;p&gt;It has been very quiet around the MDT Web FrontEnd after releasing the first Beta on Codeplex a couple months ago. But a lot has happened in the background. After adding some really nice and useful features a lot of debugging and troubleshooting and some final cleanup I`m really proud to announce the (Final) Beta 2 of the MDT Web FrontEnd. It’s feature complete for now and I will only do some final bugfixing (if necessary) before the First Release will be published within the next few weeks also with a new kewl name. ;-)&lt;/p&gt;
&lt;p&gt;To make it easier to document and less confusing, it has been moved to it’s own CodePlex Project: &lt;a title="http://mdtwebfrontend.codeplex.com/" href="http://mdtwebfrontend.codeplex.com/"&gt;http://mdtwebfrontend.codeplex.com/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Included is a &lt;a href="http://mdtwebfrontend.codeplex.com/documentation" target="_blank"&gt;Online Documentation&lt;/a&gt; with Installation and Step-By-Step guides for most of the common tasks. Most of them with screenshots of each individual step. This documentation is still work in progress so some screenshots might not match 100% of the current status but the text should always be accurate. If you find any errors, misleading parts, not detailed enough information or simply would like to have additional topics covered, just send me a note or start a &lt;a title="http://mdtwebfrontend.codeplex.com/Thread/List.aspx" href="http://mdtwebfrontend.codeplex.com/Thread/List.aspx"&gt;Discussion&lt;/a&gt; on the CodePlex page. Same applies for Errors or Bugs you might find in the current Beta Release.&lt;/p&gt;
&lt;p&gt;But why should you use this Web FrontEnd?&lt;/p&gt;
&lt;p&gt;Beside the already “famous Browse Button” (&lt;a title="http://myitforum.com/cs2/blogs/chobbs/archive/2009/10/27/mdt-a-couple-of-really-useful-mdt-utilities.aspx" href="http://myitforum.com/cs2/blogs/chobbs/archive/2009/10/27/mdt-a-couple-of-really-useful-mdt-utilities.aspx"&gt;http://myitforum.com/cs2/blogs/chobbs/archive/2009/10/27/mdt-a-couple-of-really-useful-mdt-utilities.aspx&lt;/a&gt; ;-) ) it now has a custom security model using Access Roles. This enables you to easily map your individual security requirements onto the Deployment Database and ranges from out-of-the-box Full Access for Everybody (like the current Deployment Workbench) seamless to per User, per Instance and specific Settings. All this using easy to use Drag&amp;amp;Drop capabilities. Please see “&lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=enhanced%20Security&amp;amp;referringTitle=Documentation"&gt;Managing enhanced Security&lt;/a&gt;” from the Documentation for more information.&lt;/p&gt;
&lt;p&gt;Additionally you can also create your own Groups of Settings, including Custom Settings. Organize them into your own custom Categories and put the Categories into your own Groups. Reorder them by Drag&amp;amp;Drop. Rename them if necessary. You can even create your own new Custom Settings in the Database using the FrontEnd, no need to touch the database yourself. See &lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Managing%20Groups&amp;amp;referringTitle=Documentation"&gt;Managing Settings, Categories and Groups&lt;/a&gt; in the Documentation for more information and screenshots. &lt;/p&gt;
&lt;p&gt;Using this two new features you can now e.g. give your local SiteAdmins access to their Location only, or limit the Helpdeks guys to Computers only and give them a subset of all the Settings available. Just the few they need to manipulate to do their work. Not the whole bunch of the 215+ Settings of MDT 2010 ;-) Included in the FrontEnd are two pre-configured Groups for MDT 2008 and MDT 2010 Settings. &lt;/p&gt;
&lt;p&gt;But there is even more:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;- Search for Locations, MakeModels, Computers and Roles&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;- Drag&amp;amp;Drop re-ordering of Applications, Packages and(!) Roles&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;- Edit and Delete all Instances of a specific Application, Package (including Package Mapping) or Administrator throughout the whole Deployment Database&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;- Manage Package Mappings and Role Mappings&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;etc&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The Web FrontEnd has been tested on MDT 2008, MDT 2008 Update 1 and MDT 2010 Databases. It will work with all of them out of the box but with limited functionality. Limited in this context means still more functionality then the original Deployment Workbench ;-). If you would like to make use of the enhanced features, you would need to extend your Deployment Database with some additional Tables, Views and Stored Procedures. Included is a sql script which you just need to execute on your Deployment Database. There are also some extensive Step-by-Step Guides covering all the necessary changes (&lt;a href="http://mdtwebfrontend.codeplex.com/wikipage?title=Installation%20Guide&amp;amp;referringTitle=Documentation"&gt;Installation Guide)&lt;/a&gt;. It will not change any of the original MDT Tables etc. so it can easily be removed, if you don’t want to make use of it anymore.&lt;/p&gt;
&lt;p&gt;Finally I can only encourage you to give it a try. Yes, this version is still Beta so you should test it before using it in production, even it it has already been tested thoroughly. Your help is now required to make it even more stable. As said I plan to publish the First Release within the next couple of weeks. In the meantime I will keep on extending and updating the Documentation. Also expect some further articles covering all this in more detail and showing real-life examples on how you can take advantage of it. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And last but not least, a really big THANK YOU! to Jason Scheffelmaer. He was continuously testing this since the early Alpha stages and spent a lot of time helping me getting this done. Also really appreciate all the support I got so far from others testing or just commenting on it. &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=142852" width="1" height="1"&gt;</description></item></channel></rss>