Archive: Integrate UDI with your SCCM task sequence for optional software deployments (and other cool features)

Traditionally, MDT has always been the “lite touch” (LTI) deployment solution providing interaction during task sequences to input a computer name, choose your OU, choose packages to install, etc. Alternatively, SCCM has been the “zero touch” (ZTI)  solution, where these configurations are scripted, assigned from task sequence variables, or grabbed from a database, requiring no input during deployment. There have always been ways to prompt for input in SCCM task sequences, but they were fairly limited until the introduction of UDI (User-Driven Installation) a few years ago. UDI has merged these two worlds, providing a much more interactive, MDT-like task sequence experience in your SCCM deployments.

I recently had a client that wanted to run OS deployments from SCCM (because of central management and infrastructure requirements), but also wanted the interaction in their task sequences that MDT provides out of the box. Specifically, they wanted to use a “checklist” for optional software installs, a drop-down list of OUs to choose from, and a place to enter the computer name. Luckily, these are all available with UDI integration.

UDI task sequence templates become available in SCCM once you integrate MDT into your installation. The default templates are actually really good and provide several interactive screens during the deployment process. Luckily, they are also very customizable, so we can cut out a lot of the stuff we don’t want the end user to see. If you don’t already have a package for MDT files created in SCCM, go ahead and make one. You can do this by creating a new MDT task sequence from template.


In this guide, we’re going to deploy two pieces of software, Visio Viewer, which is packaged as a traditional software program, and Adobe Reader, which is packaged as a software application. Both formats are supported. We’re going to be working with a pretty standard task sequence. I’ve cut it down to make it as simple as possible to understand, but if you need a starting point, check the bottom of this post for a task sequence that you can import into your SCCM 2012 R2 environment. You can see that this is a standard refresh task sequence, but can also be used for bare metal deployments. There are a few steps below that have been added in to support UDI.


First, we need to load the MDT Files package. This contains the UDI XML file that we will customize in this guide.


Next, we need to run the gather step. Use a settings file, if you typically use one in your deployments.


Next, we’re going to call the UDI Wizard. This is where the optional software checklist is going to appear for the user. The command used is:

cscript.exe "%DeployRoot%ScriptsUDIWizard.wsf"


Now, skip down to the portion of your task sequence that installs software. This is somewhere after the Setup Windows and ConfigMgr step. Create a new “Run Command Line” step, and name it “Convert UDI App List”. For the command line input, use:

cscript.exe "%deployroot%scriptsZTICoalesce.wsf" /CoalescePattern:Applications /CoalesceTarget:CoalescedApps /CoalesceDigits:2

This is a required step to make our checklist of apps usable in SCCM.


Next, we can Install Optional Applications. This is a standard “Install Application” step, but add a base variable called COALESCEDAPPS. This represents that list of optional software that the user has checked.


Next, we’re going to do the same thing, but for Software Programs. Use another base variable, but name this one PROGRAMS.


For the past two task sequence steps, go to the options tab and set them to Continue on Error. In the case that the user selects no optional software during the deployment, this step may actually return an error.


Save and close your task sequence.

Before we go into the UDI Wizard Designer, we need to modify the default settings for our software packages/applications. Both applications and packages have a checkbox we need to enable for UDI software deployment. It’s named “Allow this program to be installed from the Install Package task sequence without being deployed.” For software packages, this is located under the program properties here:


And for software applications, it’s located here:


You’ll need to create a device collection that all of your optional software can be deployed to. The UDI tool will use this to determine what software is available to deploy. Create software deployments for each of your applications and packages, targeting your specific collection.


Make the deployment Available. In this guide, my collection is named “OSD Optional Software”.


You will get a warning that the collection is empty. This is OK.


Finish the deployment wizard using the default settings. No schedule is required.

Now, we’re ready to open up the UDI Wizard Designer. It’s part of the Microsoft Deployment Toolkit, which should already be installed and integrated at this point.


Now, we need to open up UDIWizard_Config.xml . This file is located in your SCCM package for MDT Files. There’s a folder inside called scripts. The XML is located here.


This is the out-of-the-box version of UDIWizard_Config.xml. Every possible UDI step is enabled by default, but we don’t want to use them all. Go through the different StageGroups, and delete every item except for Install Programs. Optionally, if you want to use any of the other steps here (computer name, OU, etc) you can leave them in.


When you’re finished cleaning it up, it should look something like this:


You can delete the entire StageGroup: Replace page and items. We won’t need them for this deployment.


Now, select the Install Programs Application page from the page library on the left.


Under Edit Settings in the ribbon, open Configuration Manager.


We’re now going to integrate the UDI Wizard Designer with the SCCM installation. Enter your SCCM server name, and then type in the exact name of your target collection for all of your optional software deployments that we created earlier. Verify your settings to make sure you don’t get an error.


Now, go back and select Edit Software Settings from the same ribbon menu.


Verify that your base variables are set correctly. It should be APPLICATIONS for your software applications and PACKAGES for your software packages. The APPLICATIONS variable will later be converted to COALESCEDAPPS in your task sequence, but don’t use that here!


Now, under Optional Software, open the Configure tab. You can customize the name of this page to better suit your environment. I changed mine to Optional Software.


This is where you can edit your software list, also. Remove the sample application through the right-click menu.


Use the same menu to Add Software to Group. You can also create multiple groups. Customize as you please!


You can add both software packages and applications to this list. I’ll be using both in this guide.


For packages, you can choose a 32-bit or 64-bit program to deploy, depending on the architecture. You can also choose a default program to deploy for both instances. Click select to search your SCCM environment for available software.


If you have properly deployed your software to the collection defined previously, it will appear black. If it’s grayed out, check your deployment, or double-check your software properties to see if it’s allowed to deploy from task sequences (earlier step).


If using a software package (not an application), choose the proper program for your installation. Choose an additional 64-bit package, or use the same package for both.


Applications work exactly the same as programs in this regard. When finished, you should have a new software option added to your list.


You’ve now completed everything required in the UDI Wizard Designer – save your changes! You can always come back and make changes later to add additional software choices.


One very important step before trying your deployment is to update the MDT Files package in SCCM. Otherwise, all the changes you just made will not take effect during your OS deployment. Right-click your package, and Update Distribution Points.


Once your package has been updated and distributed, you should be ready to try out your new task sequence with optional software checklist. The UDI Wizard should now appear during your task sequence, with the list of optional software to choose from. Your optional software should be installed when the task sequence completes.


For reference, here’s a copy of my UDIWizard_Config.xml and the task sequence used in this guide that you can import into your installation.

I hope you find this helpful! Let me know if I can provide any additional clarity.

36 thoughts on “Archive: Integrate UDI with your SCCM task sequence for optional software deployments (and other cool features)”

    1. Yes, these steps will work with MDT 2013 integrated with SCCM 2007, except you’ll only have optional software packages (and not applications). Good luck!

  1. I’m able to get the OSD screen up when I image but not my customized one. Still has all the original from the xml. I’m assuming I should be editing the UDIWizard_Config.xml that is in the same data location specified in the MDT 2013 Script files package I reference in the Use Toolkit Package task?

      1. Hmm… I created a new tool kit files package with newly generated content from the MDT workbench. Edited the UDIWizard_Config.xml down to the two screens I want, saved it to the new data location where the package is pointed. Still, I get the OSD with all the pages on it.

        1. Right, so after you did that, did you update the MDT files package in the console? Even though the package is pointing to the proper location, you still need to update that package in the ConfigMan console. Right-click your package, and select “Update Distribution Points”… this will actually refresh the content that gets used in your task sequence. CM doesn’t actively update packages on its own, at least not by default.

          1. Wow. I distributed the content when I made the package to all the DPs so I thought I was good. That fixed it. Another question, and this is the main reason I want to get this going, is on the New Computer Details how do I get the domain and OU dropdowns to work. They are there but not populated.

          2. Now I get it. I’m pretty new to this, but I had to redistribute because that one file changed.
            Thanks again!

          3. Well, I thought I had the OU thing figured out. The domain populates, but none of the OU’s I selected populate the OSD wizard. If I select an OU with multiple OU’s beneath it are they supposed to automatically be there or do I have to choose each one individually?

  2. How do you create a collection without limiting it to an existing collection? I like your idea of creating a collection specifically for these apps, but don’t wont it advertised anywhere.

    1. You have to limit all collections in SCCM 2012. If you want to negate the limit, just set the limiting collection to All Systems or All Desktop and Server Clients. The optional OSD collection can be limited to any collection- it won’t matter because you don’t populate it with any systems using this process. Hope that helps.

  3. Hey Josh for some reason my install optional applications and install optional programs keeps a failing? How can i see why it is failing?

    1. Also looks like the UDI Wizard shows it was skipped because the condition was evaluated to be false. would that have anything to do with it?

  4. Do we need to create Software Package UDI list step in TS as we are doing for applications,
    I am using Applications and packages in checklist but application gets installed successfully but software packages giving error in smsts.log: “no env variable with specified basename Packages”.
    Using sccm 2012 with MDT 2012 update1.

    1. I would recommend setting that step to “continue on error” to avoid the error. But yes, the packages step only needs to exist if you’re deploying packages. If you aren’t using it, removing it does no harm.

  5. Applications and Software Pacakages are installing well with UDI Checklist model. Only problem is we need to change Variable name in Task sequence for “Install Programs” from PROGRAMS to PACKAGES because env. variable in UDI is set to PACKAGES not PROGRAMS.
    Otherwise error will be “no environment variable found with basename Programs”.

      1. Yes, thanks for that clarification! I’ve spent the better part of today trying to figure out why my applications ARE installing, but my packages AREN’T. New to this whole thing, but the solution makes perfect sense now that I see it.

  6. I have edited the CM settings in UDI Wizard and it picks up the site code, but when I try to view apps or packages in the settings for optional software nothing is listed (blank, not greyed out). All the configs seems to match, any thoughts?

    1. If they’re not grayed out and just empty, it must be some sort of connection issue. Did you type in the Application collection correctly- character by character? This is very sensitive. Thanks!

  7. Hi Josh,
    This is a great guide. I have a question. I thought one of the functions of the CustomSettings.ini file was to be able to turn off pages in the UDI. Is it possible to use the variables in the CS to turn these off instead of removing them from the xml?

    TIA and keep up the great posts.

    1. It might be possible, but I haven’t tested it. I know that you can set values in the customsettings.ini and then they will be hard-coded in the UDI Wizard, but I’m not sure if the pages can be deleted that way. You can have multiple UDI XML files, though, if you want to preserve the original.

  8. The files aren’t accessible, can you, please, make them available again.
    Thanks, and congratulations for the helpful post

  9. We also install drivers within our task sequence, and somehow I’m losing the %deployroot% variable before it runs the Convert UDI App List. Can I just bump that up higher, or can I install the software before the drivers? Thanks.

    1. I think I see what the issue is. I believe I am supposed to have a BootStrap.ini file, which would specify the DeployRoot variable, and I do not…

  10. hello Josh

    i want your help with the UDI and Task Sequence procedure.
    i have created all the steps as described in the guide. when the OS deployment begins it prompts me to select the applications that i want to install normally.
    when the task sequence reach the step to install the applications, it bypassing this step and it goes to the final step of my sequence.
    even if i checked the “if an application fail continue to install other applications” in the list.
    any idea why this is happens?

    thank you

  11. Hi,

    we have some problems to install x86 packages.

    we have configured UDI with both packages (x86 and x64) but always is installing the x64 package.


  12. Any idea why Applications work but Packages dont ? i already matched the task sequence variables with the ones in the UDI like varun said above.
    Thank you

  13. Wish I read ALL of the comments:
    Applications and Software Pacakages are installing well with UDI Checklist model. Only problem is we need to change Variable name in Task sequence for “Install Programs” from PROGRAMS to PACKAGES because env. variable in UDI is set to PACKAGES not PROGRAMS.
    Otherwise error will be “no environment variable found with basename Programs”.

    I had the same issue with packages…..

  14. Great tutorial, works awesome!
    If I also wanted to include the UDI page that lets you select what OU to place a new computer in, aside from enabling the “New Computer Details” page in the UDI Wizard, is there any additional task sequence steps and/or MDT scripts I need to tell it to run or does it all get covered under the “Convert UDI App List” step? And if this is indeed possible, what section of the task sequence do I put the OU piece under?

    Many thanks.

Comments are closed.