Parse Orchestrator Export

I am happy to report that the Parse Orchestrator Export tool is now available for public consumption! This has been a back burner project for me for quite a while now and is actually one of a suite of projects I inherited from Robert Hearn when he left Microsoft. I blogged earlier about its default functionality (https://opalis.wordpress.com/2013/04/11/parse-orchestrator-export-tool/) and will use this post to expand a bit on the new functionality. The project is available at http://scorch.codeplex.com/releases/view/104915

What is it?

It is a GUI application that looks at exports from your Orchestrator environment and allows you to perform multiple actions on them before re-importing them into the same environment or another Orchestrator Environment

Primary Functions

  1. Display a Graphical Representation of an Export
    1. We use this internally while doing change control to ensure that all Global Configurations are properly configured in the destination Orchestrator Environment
  2. Sanitize Export
    1. This will remove all un-referenced global Settings and Configurations
    2. http://blogs.technet.com/b/orchestrator/archive/2012/05/15/3497985.aspx
    3. https://opalis.wordpress.com/2013/04/11/parse-orchestrator-export-tool/
  3. Apply Link Best Practices
    1. Modifies the links of an export to give them appropriate names and colors
    2. https://opalis.wordpress.com/2013/04/12/orchestrator-link-best-practices/
  4. Set Max Parallel
    1. Allows for Bulk setting of Runbook Job Concurrency
    2. https://opalis.wordpress.com/2013/04/17/bulk-set-orchestrator-max-policy-requests/
  5. Turn On / Off Generic Logging
    1. Turns Off or On Generic Logging for All Runbooks
    2. https://opalis.wordpress.com/2013/04/11/parse-orchestrator-export-tool/
  6. Turn On / Off Object Specific Logging
    1. Turns Off or On Object Specific Logging for All Runbooks
    2. https://opalis.wordpress.com/2013/04/11/parse-orchestrator-export-tool/
  7. Analyze Export
    1. Iterates through the Export File and checks for common misconfigurations
      1. Multiple Link objects between the same source and destination objects
      2. Trigger Policies that do not have all of the input parameters for the target policy defined
  8. Modify Name
    1. Changes the name of any Runbook / Folder / Object / Global Configuration

Modify Name

This is one of the most exciting functions of this tool in my opinion. This, coupled with “Set Max Parallel” makes it very simple to set Job Concurrency in bulk. It also makes it very easy to ‘duplicate’ runbooks and have them maintain their own unique sets of global settings / configurations for connecting to resources

Max Parallel Example

Say I wanted I had a Runbook that is called from SCCM task sequences through our Web Service. I probably want each one of my Runbooks to be able to be called by different machines being re-imaged. By default though, each Runbook has it concurrency set to 1. This means that all of my requests will ‘stack up’ behind one another (ie if I have 5 machines that make a call to my workflow for shutting off Port Authentication they would be handled one at a time in the order they were received even though they could all run at the same time). To change this behavior we can go in with the Runbook designer to each Runbook and set ‘Job Concurrency’ to something other than one

Or, if we want to do it in bulk we can use the Export to to change a folder name then click ‘Set Max Parallel’ and it will change the setting for all of our Runbooks!

 


And now all the Runbooks under that folder have their concurrency set to 5! More information about ‘Set Max Parallel’ can be found at https://opalis.wordpress.com/2013/04/17/bulk-set-orchestrator-max-policy-requests/

Runbook Duplication

The most interesting use of ‘Modify Name’ I think though is the ability duplicate a Runbook in such a way that it can live in the same environment as its base Runbook without sharing any references. Imagine if you will a scenario where we have a Runbook that will be called by a task sequence. The first version of these Runbooks *should* be pointed at ‘development’ infrastructure – a test Active Directory domain, a test SCCM instances etc etc – the though becomes how do we make a ‘production’ version of this without much effort and while keeping our development version? Modify Name to the rescue!

Step 1: Export your Runbook

Step 2: Sanitize your Runbook with the tool

Step 3: Modify Global Names to Ensure Uniqueness

If there is anything in your export folder that you need to have a ‘separate’ instance of for the ‘new’ version then simply change its name using Modify Name (it will update both the element name and all references to that name). We usually will re-name the Root Runbook Folder, the Root Variable Folder and all Global Configurations

Renaming Root Runbook Folder

Supply the New Name and Click Ok

Renaming Root Variable Folder

We also rename the root Variable folder, this means that we will have two totally separate versions of all variables and we can update them independently

Renaming Global Configurations

We can also rename Global Configurations (those things under ‘Options -> Integration Pack’) meaning we don’t have to go in and ‘re-point / reconfigure’ all of our objects to change a global configuration

Now we have unique versions in our export file of everything that we want to be independent of the other version. We can no re-import and go about our day!

Hopefully everyone finds this useful!

Posted in Uncategorized
4 comments on “Parse Orchestrator Export
  1. Tech Guy says:

    Hi we get an Unhandled exception error when running this tool.

    Error:

    Object reference not set to an instance of an object

    See the end of this message for details on invoking
    just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.NullReferenceException: Object reference not set to an instance of an object.
    at ParseOrchestratorExport.Form1.setupTreeRoots(TreeNode treeRoot, TreeNode& RunbookNode, TreeNode& VariablesTreeNode, TreeNode& SchedulesTreeNode, TreeNode& CountersTreeNode, TreeNode& ComputerGroupsTreeNode, TreeNode& GlobalConfigurationsNode, TreeNode& ASCUsersTreeNode)
    at ParseOrchestratorExport.Form1.reloadTree()
    at ParseOrchestratorExport.Form1.button2_Click(Object sender, EventArgs e)
    at System.Windows.Forms.Control.OnClick(EventArgs e)
    at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    at System.Windows.Forms.Control.WndProc(Message& m)
    at System.Windows.Forms.ButtonBase.WndProc(Message& m)
    at System.Windows.Forms.Button.WndProc(Message& m)
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    ************** Loaded Assemblies **************
    mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5448 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    —————————————-
    ParseOrchestratorExport
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/lbn/username/ParseOrchestratorExport.exe
    —————————————-
    System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5446 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    —————————————-
    System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5447 (Win7SP1GDR.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    —————————————-
    System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    —————————————-
    System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.5420 (Win7SP1.050727-5400)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    —————————————-

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

  2. Tech Guy says:

    Managed to resolve my issue.

    Steps to repro the error.

    1. Export A Runbook
    2. Download ParseOrchestratorExport.exe and Run
    3. Point to the Export File
    4. Click Parse
    5. You will get an error that it cannot locate ‘Orchestrator.Administration.dll’ (close the error)
    6. Download ‘Orchestrator.Administration.dll’ and place it in the same location as ParseOrchestratorExport.exe
    7. Run ParseOrchestratorExport.exe
    8. Point to the same file you exported at step 1.
    9. You will get the error above.

    To fix I had to export the file again, then the tool worked. Thanks for creating this tool, saves alot of the problems with dupped varaibles etc. It was overly clear we had to download Orchestrator.Administration.dll as well.

    Thanks

Leave a comment