<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>www.contoso.se</title>
	<atom:link href="http://contoso.se/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://contoso.se/blog</link>
	<description>Microsoft System Center by Anders Bengtsson</description>
	<lastBuildDate>Fri, 04 May 2012 09:23:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Who Did That? Auditing in Orchestrator</title>
		<link>http://contoso.se/blog/?p=2980</link>
		<comments>http://contoso.se/blog/?p=2980#comments</comments>
		<pubDate>Fri, 04 May 2012 09:23:28 +0000</pubDate>
		<dc:creator>Anders Bengtsson</dc:creator>
				<category><![CDATA[Orchestrator]]></category>

		<guid isPermaLink="false">http://contoso.se/blog/?p=2980</guid>
		<description><![CDATA[In this post I want to share with you some ideas around auditing in Orchestrator. When Orchestrator gets more and more integrated into your IT environment auditing and change control within Orchestrator also gets more important. In Orchestrator you have a couple of different ways to do this. You have the possible to enable audit trail. [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I want to share with you some ideas around auditing in Orchestrator. When Orchestrator gets more and more integrated into your IT environment auditing and change control within Orchestrator also gets more important. In Orchestrator you have a couple of different ways to do this. You have the possible to enable audit trail. Audit trail is a number of text log files that contacts information about activities in runbooks and who started which runbook. Depending on how your runbooks are working the audit trail log files can grows very large and consumes a large amount of disk space. If you enable audit trail you should also plan how to archive and purge these log files. To enable or disable audit trail follow these steps</p>
<ol>
<li>On the Orchestrator management server open a command prompt and change folder to the Management Server folder in the Orchestrator installation folder , default  C:\Program Files (x86)\Microsoft System Center 2012\Orchestrator\Management Server</li>
<li>Run &#8220;ATLC.EXE /enable&#8221; to enable audit trail or run &#8220;ATLC.EXE /disable&#8221; to disable audit trail</li>
</ol>
<div>Audit trail log files are written to the C:\ProgramData\Microsoft System Center 2012\Orchestrator\Audit folder. In the Audit folder there are two sub folders that will be used for audit logs, ManagementService and PolicyModule. The ManagementService folder will store log files that log date, runbook server, user and which runbook that was started. The PolicyModule folder store log files that log details about each activity in each runbook that is executed. Below is a couple of screens of these log files. More info about modifying trace log settings at <a href="http://msdn.microsoft.com/en-us/library/hh508839.aspx">MSDN</a>. Trace log settings is controlled in the registry under the key HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\SystemCenter2012\Orchestrator\TraceLogger. Each component of Orchestrator has a set of registry values where you can configure level of log details. At the MSDN link you can read how to enable logging for more components in Orchestrator and also how to level of details of each component.</div>
<div></div>
<div></div>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing01.jpg"><img class="aligncenter size-medium wp-image-2990" title="20120504_Auditing01" src="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing01-300x105.jpg" alt="" width="300" height="105" /></a></div>
<div></div>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing02.jpg"><img class="aligncenter size-medium wp-image-2991" title="20120504_Auditing02" src="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing02-300x20.jpg" alt="" width="300" height="20" /></a></div>
<p>&nbsp;</p>
<p>In the Orchestrator Runbook Designer you can also see some auditing information. In the console there is an Audit History tab for each runbook. In the Audit History tab you can see all changes to a runbook, for example who change the name of an activity. Below there is figure that show an example of Audit History information. The information shown in the Audit History tab is a mix of data from two tables in the Orchestrator database, the OBJECT_AUDIT table and the CHECK_IN_HISTORY table.</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing03.jpg"><img class="aligncenter size-medium wp-image-2998" title="20120504_Auditing03" src="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing03-287x300.jpg" alt="" width="287" height="300" /></a></p>
<p>&nbsp;</p>
<p>To review all changes to objects in the Orchestrator database, for example a new setting on a activity run the following SQL query against your Orchestrator database. Note that the SQL query only show objects that have DELETED equals &#8220;0&#8243;, the SQL query only show objects that are non-deleted. You can change this setting if you want to see changes also to objects that are deleted.</p>
<pre>SELECT P.Name AS [Runbook Name], O.Name AS [Activity Name], OT.Name AS [Activity Type], OA.Action,
CASE WHEN OA.Attribute LIKE '%[0-F][0-F][0-F][0-F][0-F][0-F][0-F][0-F]-[0-F][0-F][0-F][0-F]-
[0-F][0-F][0-F][0-F]-[0-F][0-F][0-F][0-F]-[0-F][0-F][0-F][0-F][0-F][0-F][0-F][0-F][0-F][0-F]
[0-F][0-F]%'
 THEN 'NEW ACTIVITY' ELSE OA.Attribute END AS Attribute, OA.OldValue, OA.NewValue, CIH.DateTime AS
 [Change Timestamp], S.Account AS [User]
FROM OBJECT_AUDIT AS OA INNER JOIN
 OBJECTS AS O ON OA.ObjectID = O.UniqueID INNER JOIN
 POLICIES AS P ON O.ParentID = P.UniqueID INNER JOIN
 OBJECTTYPES AS OT ON OA.ObjectType = OT.UniqueID INNER JOIN
 CHECK_IN_HISTORY AS CIH ON CIH.UniqueID = OA.TransactionID INNER JOIN
 SIDS AS S ON CIH.CheckInUser = S.SID
WHERE (O.Deleted = 0)
ORDER BY [Change Timestamp] DESC</pre>
<pre><a href="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing04.jpg"><img class="aligncenter size-medium wp-image-3005" title="20120504_Auditing04" src="http://contoso.se/blog/wp-content/uploads/2012/05/20120504_Auditing04-300x75.jpg" alt="" width="300" height="75" /></a></pre>
<p>&nbsp;</p>
<p>Thanks to Fanjoy and Ahrens for SQL query support.</p>
]]></content:encoded>
			<wfw:commentRss>http://contoso.se/blog/?feed=rss2&#038;p=2980</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>List all activities not using default service account</title>
		<link>http://contoso.se/blog/?p=2976</link>
		<comments>http://contoso.se/blog/?p=2976#comments</comments>
		<pubDate>Wed, 02 May 2012 07:24:56 +0000</pubDate>
		<dc:creator>Anders Bengtsson</dc:creator>
				<category><![CDATA[Orchestrator]]></category>

		<guid isPermaLink="false">http://contoso.se/blog/?p=2976</guid>
		<description><![CDATA[A runbook is executed with the Orchestrator Runbook Service service account. In most scenarios that are not an issue. But in some scenarios you need a runbook to run with a specific account, and all other runbooks run with the default service account. This can be done with an extra Runbook Server that uses another [...]]]></description>
			<content:encoded><![CDATA[<p>A runbook is executed with the Orchestrator Runbook Service service account. In most scenarios that are not an issue. But in some scenarios you need a runbook to run with a specific account, and all other runbooks run with the default service account. This can be done with an extra Runbook Server that uses another Runbook Service service account, or per activity or it can be solved at design level in the runbook by using the Invoke Runbook activity. To configure a runbook to run with a specific account, please <a title="Run a runbook with a specific account" href="http://contoso.se/blog/?p=2907">see this post</a>.</p>
<p>Specifying an account on each activity requires a lot of administration. If you need to specify the same account on multiple activities it is recommended to use variables. Variables minimize the risk of incorrect input and also make updates much easier. In Orchestrator 2012 you can configure a variable to be encrypted. If you store a password in a variable it will not be shown or stored in clear text, instead it will be encrypted.</p>
<p>If you want to see all activities in your Orchestrator environment that is not using the default service account you can run the following query</p>
<blockquote><p>SELECT OBJECTS.Name AS Activity, OBJECTS.ASC_Username, POLICIES.Name AS Runbook, OBJECTTYPES.Name AS [Activity Type]<br />
FROM OBJECTS INNER JOIN<br />
POLICIES ON OBJECTS.ParentID = POLICIES.UniqueID INNER JOIN<br />
OBJECTTYPES ON OBJECTS.ObjectType = OBJECTTYPES.UniqueID<br />
WHERE (OBJECTS.Deleted = &#8217;0&#8242;) AND (OBJECTS.ASC_UseServiceSecurity = 0)</p></blockquote>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/05/20120502-blogpost01.jpg"><img class="aligncenter size-medium wp-image-2977" title="20120502 blogpost01" src="http://contoso.se/blog/wp-content/uploads/2012/05/20120502-blogpost01-300x90.jpg" alt="" width="300" height="90" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://contoso.se/blog/?feed=rss2&#038;p=2976</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building groups in Operations Manager, with a bit of Orchestrator magic</title>
		<link>http://contoso.se/blog/?p=2963</link>
		<comments>http://contoso.se/blog/?p=2963#comments</comments>
		<pubDate>Wed, 11 Apr 2012 08:56:09 +0000</pubDate>
		<dc:creator>Anders Bengtsson</dc:creator>
				<category><![CDATA[Operations Manager 2012]]></category>
		<category><![CDATA[Orchestrator]]></category>
		<category><![CDATA[System Center Operations Manager 2007]]></category>

		<guid isPermaLink="false">http://contoso.se/blog/?p=2963</guid>
		<description><![CDATA[In many scenarios you have a list of servers, a database query result or a place in your Active Directory that contains servers that you want to monitor in some special way. Often you need the machines in a group in Operations Manager so you can for example create overrides, maintenance mode and views for [...]]]></description>
			<content:encoded><![CDATA[<p>In many scenarios you have a list of servers, a database query result or a place in your Active Directory that contains servers that you want to monitor in some special way. Often you need the machines in a group in Operations Manager so you can for example create overrides, maintenance mode and views for that group. It is a pretty boring work to build the group manually and then to keep the group updated.</p>
<p>A way to get the Operations Manager group in sync with the machine list is to use a runbook that creates a management pack including a group based on the list. This set of example runbooks reads a list of machine, creates a management pack with a group that includes the machines. The list of servers could be generated by another runbook or another tool. The last runbook also imports the management pack into Operations Manager.</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_01.jpg"><img class="aligncenter size-medium wp-image-2964" title="20120411_GRP_01" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_01-300x66.jpg" alt="" width="300" height="66" /></a></p>
<p>This first runbook execute the following steps. In general this runbook checks if the machines in the list has a Operations Manager agent, if they are monitored by Operations Manager</p>
<ol>
<li>Delete File. Deletes old Machines_IDS.txt file if it exists. Machines_IDS.txt is used later in the runbook and needs to be blank before we begin</li>
<li>Get Lines. Read all lines in the list. The list is simple a text file with servers, one server per row</li>
<li>Get Monitor. Check if Operations Manager have a Microsoft.Windows.Computer monitor for the servers in the text file</li>
<li>Append Line. For each machine that has a monitor, we write the machine name to a temporary file. This is the same file as step one deleted any old version of</li>
<li>Junction. We merge multiple threads together</li>
<li>Invoke Runbook. Trigger next runbook</li>
</ol>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_02.jpg"><img class="aligncenter  wp-image-2965" title="20120411_GRP_02" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_02-300x36.jpg" alt="" width="300" height="36" /></a></div>
<div>The second runbook executes the following steps. In general it builds the management pack file in XML</div>
<div>
<ol>
<li>Delete File. Deletes old MP files</li>
<li>Modify Counter. We use a counter to keep track of the management pack version number. This step adds one to that counter value</li>
<li>Get Counter Value. Get the counter value for the same counter as in step 2</li>
<li>Append Line. This steps writes the first half of the XML code that needs to be in the management pack. The GroupInstanceID is a random ID that the Operations Manager console generated when I test created a group in the console. You could replace that and all the other names in the management packs.<br />
<a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_03.jpg"><img class="aligncenter size-medium wp-image-2969" title="20120411_GRP_03" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_03-300x179.jpg" alt="" width="300" height="179" /></a></li>
<li>Read Line. This step reads every machine that we wrote in the machine list in the first runbook, step 4,</li>
<li>Append Line. This steps writes all the machines from step 5 into the management pack file<br />
<a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_04.jpg"><img class="aligncenter size-medium wp-image-2970" title="20120411_GRP_04" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_04-300x130.jpg" alt="" width="300" height="130" /></a></li>
<li>Junction. We merge multiple threads together</li>
<li>Append Line. Writes the end of the management pack, some more XML</li>
<li>Invoke Runbook. Starts the last runbook and pass the path to the management pack file</li>
</ol>
<div>The last runbook inports the management pack file into Operations Manager</div>
<div></div>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_05.jpg"><img class="aligncenter size-full wp-image-2971" title="20120411_GRP_05" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_05.jpg" alt="" width="281" height="117" /></a></div>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_06.jpg"><img class="aligncenter size-medium wp-image-2972" title="20120411_GRP_06" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_GRP_06-300x121.jpg" alt="" width="300" height="121" /></a></div>
<div></div>
</div>
<p>The result is that each time you run this set of runbooks they will generate a new management pack version with a group that includes all the machines from your list, that has a agent. The management pack is imported into Operations Manager and you can use the updated group. You could include a step to seal the management pack too. You can download my runbook example here, <a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120410_GroupSync_WOLF.zip">20120410_GroupSync_WOLF</a>.  Please note that this is provided “as is” with no warranties at all.</p>
]]></content:encoded>
			<wfw:commentRss>http://contoso.se/blog/?feed=rss2&#038;p=2963</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Convert a incident to a service request, with a bit of Orchestrator magic</title>
		<link>http://contoso.se/blog/?p=2943</link>
		<comments>http://contoso.se/blog/?p=2943#comments</comments>
		<pubDate>Wed, 11 Apr 2012 07:51:09 +0000</pubDate>
		<dc:creator>Anders Bengtsson</dc:creator>
				<category><![CDATA[Orchestrator]]></category>
		<category><![CDATA[System Center Service Manager]]></category>

		<guid isPermaLink="false">http://contoso.se/blog/?p=2943</guid>
		<description><![CDATA[A couple of days ago there was a question about converting a incident in Service Manager to a service request. The scenario was around a support call first register as an incident, but later the operator finds out it should be a service request. Out of the box in Service Manager there is no tool [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago there was a question about converting a incident in Service Manager to a service request. The scenario was around a support call first register as an incident, but later the operator finds out it should be a service request. Out of the box in Service Manager there is no tool to move the data we have already input in the incident over to a new service request. But of course we could use Orchestrator to do it <img src='http://contoso.se/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  We could also build this workflow as an internal workflow in Service Manager&#8230; but that would take me a lot of hours; this runbook only took two cups of coffee. In this post I will show a idea how to build a task that you can run against a incident in Service Manager to &#8220;convert&#8221; it into a service request. The incident is not really converted, we copy the info we have in the incident over to a new service request, link them together and close the incident.</p>
<p>The runbook is trigger by a task in Service Manager, input parameter is only the incident ID.</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_013.jpg"><img class="aligncenter size-large wp-image-2947" title="20120411_01" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_013-1024x207.jpg" alt="" width="1024" height="207" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<ol>
<li>Initialize Data. Input parameter is IncidentID. ID of the incident we want to &#8220;convert&#8221; to a service request</li>
<li>Get Object. Gets the incident from Service Manager. This step also verify that the incident don&#8217;t have Closed as status</li>
<li>Send Platform Event. If the incident is closed or cant be found a platform event is generated. For example if you trigger the runbook with a incorrect incident ID from the Orchestrator console it will not run</li>
<li>Get Relationship. Gets related Active Directory User to the incident</li>
<li>Get Object. Gets the user that step 4 found</li>
<li>Create Object. Creates a new service request and writes info to it from the incident</li>
<li>Create Relationship. Create a relationship between between the service request and the affected user (relationship type = user)</li>
<li>Create Relationship. Create a relationship between the service request and the incident (relationship class = is related to work item)</li>
<li>Format Date/Time. Gets the current time stamp in a correct format, will be used when creating comments on the incident and the service request</li>
<li>Run .NET Script. A small PowerShell script that generates a GUID. The GUID will be used as ID for the incident comment</li>
<li>Create Related Object. Creates a Trouble Ticket Action Log (action log comment) on and relates it to the incident. The runbook writes a comment saying the incident has been converted to a service request (relationship type = Trouble Ticket Has Action Log)</li>
<li>Update Object. Resolve the incident, change status to Resolved</li>
<li>Run .NET Script. A small PowerShell script that generates a GUID. The GUID will be used as ID for the service request comment</li>
<li>Create Related Object. Creates a Trouble Ticket Analyst Comments (log comment) and relates it to the service request. The runbook writes a comment saying the service request was based on the incident</li>
<li>Send Platform Event. Writes a platform event with service request ID and incident ID</li>
</ol>
<p>That is the runbook, the next component is the task in Service Manager. We could trigger the runbook from Orchestrator console and input the incident ID manually, but it is easier with a task in Service Manager. In the Service Manager console, in the Library workspace you can create a new task with the following settings.</p>
<ul>
<li>General/Task name: Contoso - Convert Incident to Service Request</li>
<li>General/Target class: Incident</li>
<li>Categories/Categories: Incident Management Folder Tasks and Incident Support Groups Folder Tasks</li>
<li>Command Line/Full path to command: C:\TEMP\ORT251\ORTRunbookLauncherCLI.exe</li>
<li>Command Line/Parameters: /IncidentID=$Context/Property[Type='WorkItem!System.WorkItem']/Id$<br />
(the parameter is the work item ID that you can insert from the  &#8221;Insert Property&#8221; button)</li>
</ul>
<div>As you can see I use ORTRunbookLauncherCLI.exe to start the runbook. ORTRunbookLauncher.exe is part of <a href="http://orchestrator.codeplex.com/releases/view/76983">Orchestrator Remote Tool</a> that you can download from Codeplex. These tools provide a way to launch Orchestrator runbooks remotely from a UI or a command-line. Note that before you can run ORTRunbookLauncherCLI.exe you need to run ORTUIGenerator to generate a config (XML) file for the runbook you want to trigger. Lets look at a example</div>
<div></div>
<div>We select a incident and click the &#8220;Contoso &#8211; Convert incident to Service Request&#8221; task</div>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_02.jpg"><img class="aligncenter  wp-image-2950" title="20120411_02" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_02-1024x34.jpg" alt="" width="512" height="34" /></a></div>
<div>&#8230;the task starts and as we can see the task forward the incident ID to the runbook and starts the runbook</div>
<div></div>
<div><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_031.jpg"><img class="aligncenter size-medium wp-image-2952" title="20120411_03" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_031-278x300.jpg" alt="" width="278" height="300" /></a></div>
<div></div>
<div></div>
<p>&#8230;the runbook runs and generates a platform event</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_04.jpg"><img class="aligncenter size-medium wp-image-2953" title="20120411_04" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_04-300x269.jpg" alt="" width="300" height="269" /></a></p>
<p>&#8230;if we look at the incident it is now resolved and has a new comment</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_05.jpg"><img class="aligncenter size-medium wp-image-2954" title="20120411_05" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_05-300x42.jpg" alt="" width="300" height="42" /></a></p>
<p>&#8230;also a relationship to the new service request</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_06.jpg"><img class="aligncenter size-medium wp-image-2955" title="20120411_06" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_06-300x44.jpg" alt="" width="300" height="44" /></a></p>
<p>&#8230;and when look at the service request we can see that data has been copied over from the incident</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_07.jpg"><img class="aligncenter size-medium wp-image-2956" title="20120411_07" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120411_07-300x212.jpg" alt="" width="300" height="212" /></a></p>
<p>Summary: We have built a task in Service Manager that use the Orchestrator Remote Tool to trigger a runbook. The runbook connects to Service Manager, copies the data we have in the incident over to a new service request, resolve the incident and update both incident and service request with relationships and comments.</p>
<p>You can download my runbook example here, <a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120410_Incident2ServiceReq_WOLF.zip">20120410_Incident2ServiceReq_WOLF</a>.  Please note that this is provided “as is” with no warranties at all.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://contoso.se/blog/?feed=rss2&#038;p=2943</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Remote work with the Runbook Designer console and security roles in Orchestrator</title>
		<link>http://contoso.se/blog/?p=2918</link>
		<comments>http://contoso.se/blog/?p=2918#comments</comments>
		<pubDate>Tue, 10 Apr 2012 08:29:01 +0000</pubDate>
		<dc:creator>Anders Bengtsson</dc:creator>
				<category><![CDATA[Orchestrator]]></category>

		<guid isPermaLink="false">http://contoso.se/blog/?p=2918</guid>
		<description><![CDATA[In this post I will show you what you need to configure to allow engineers connect remote to the Orchestrator environment without Orchestrator administrator permissions. After Orchestrator installation we have one security group, the Orchestrator User Group. If your Orchestrator environment is in an Active Directory domain you should use an Active Directory security group as the Orchestrator [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I will show you what you need to configure to allow engineers connect remote to the Orchestrator environment without Orchestrator administrator permissions. After Orchestrator installation we have one security group, the Orchestrator User Group. If your Orchestrator environment is in an Active Directory domain you should use an Active Directory security group as the Orchestrator User Group. The Orchestrator User Group has full access to the Orchestrator environment. If you enabled remote connection during installation, members of the Orchestrator User Group can also remote connect to the Orchestrator environment, for example run the Runbook Designer console from a workstation. A common scenario is that other engineers and experts need access to the Orchestrator environment too, for example the Service Manager team wants to author some runbooks. At the same time the Service Manager engineers should not have access to every runbook, only runbooks created by the Service Manager team. In other Words you cant add the Serivce Manager team to the Orchestrator User Group. To solve this we need to perform the following steps</p>
<ul>
<li>Assign general Orchestrator permissions to a &#8220;Orchestrator Remote Users&#8221; security group. There are a number of general permissions that everyone that will work with Orchestrator remote needs. We will assign these permissions to a Orchestrator Remote Users group. By using one general group for this kind of permissions the administration gets a bit easier. In this example my group is named SKYNET\grp-sco-remoteusers.</li>
<li>Assign specific Service Manager team permissions to a &#8220;Service Manager Team&#8221; security group. We will most likely have more teams then the Service Manager team working with runbooks. Each team will need specific permissions, which will result in one specific security group for each team. In this example my Service Manager team group is named SKYNET\grp-sco-scsmteam.</li>
</ul>
<p>We will start by assign the Orchestrator Remote Users Group suitable DCOM permissions</p>
<ol>
<li>On the Orchestrator Management Server, start Component Services from the start menu</li>
<li>In the Component Services console, expand Component Services, expand Computers and expand DCOM Config</li>
<li>In the list of DCOM applications scroll down and select omanagement. Right-click the omanagement DCOM application and select properties from the context meny<br />
<img class="aligncenter size-medium wp-image-2921" title="20120409_01" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_01-300x194.jpg" alt="" width="300" height="194" /></li>
<li>In the omanagement Properties window, click the Security tab</li>
<li>Click Edit in the Launch and Activation Permissions area, click Add and add the grp-sco-remoteusers security group from Active Directory. Assign the grp-sco-remoteusers security group Remote Launch and Remote Activiation permissions. Click OK</li>
<li>Click Edit in the Access Permissions area, click Add and add the grp-sco-remoteusers security group from Active Directory. Assign the grp-sco-remoteusers security group Remote Access and Local Access permissions. Click OK</li>
<li>In the Component Services console, right-click My Computer and select properties from the context menu</li>
<li>In the My Computer Properties box, select the COM Security tab</li>
<li>Click Edit Limits… in the Access Permissions area. Click Add and add the grp-sco-remoteusers security group from Active Directory. Assign the grp-sco-remoteusers security group Remote Access permissions. Click OK</li>
<li>Click Edit Limits… in the Launch and Activation Permissions area. Click Add and add the grp-sco-remoteusers security group from Active Directory. Assign the grp-sco-remoteusers security group Remote Launch and Remote Activation permissions. Click OK</li>
<li>Close the Component Services console 12. After all permissions are configured, on the Orchestrator Management server, start the Services console and restart the Orchestrator Management Service (ManagementService.exe ). If a user dont have correct DCOM permissions to access Orchestrator you will see a error message in the Runbook Designer console, like the one below</li>
</ol>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_031.jpg"><img class="aligncenter size-medium wp-image-2927" title="20120409_03" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_031-300x112.jpg" alt="" width="300" height="112" /></a> and on the Orchestrator management server you will see a event like this <a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_04.jpg"><img class="aligncenter size-medium wp-image-2928" title="20120409_04" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_04-300x190.jpg" alt="" width="300" height="190" /></a></p>
<p>All users that will work with the Orchestrator Runbook Designer console needs read permissions to the top level of the Runbooks folder navigation tree. To assign the grp-sco-remoteusers security group permissions to the root level follow these steps</p>
<ol>
<li>Start the Orchestrator Runbook Designer console as an Orchestrator administrator</li>
<li>Right-click the Runbooks folder and select Permissions from the context menu</li>
<li>In the Permissions for Runbooks dialog box, click Add.. and add the grp-sco-remoteusers security group from Active Directory</li>
<li>In the Permissions for Runbooks dialog box, un-selected everything except Read as permissions for the grp-sco-remoteusers group</li>
<li>In the Permissions for Runbooks dialog box, click Advanced</li>
<li>In the Advanced Security Settings for Runbooks dialog box, select the grp-sco-remoteusers security group and click Edit…</li>
<li>In the Permissions Entry for Runbooks dialog box, change the Apply To drop-down menu to This object only</li>
<li>In the Permissions Entry for Runbooks dialog box, click OK</li>
<li>In the Advanced Security Settings for Runbooks dialog box, click OK</li>
<li>In the Permissions for Runbooks dialog box, click OK</li>
</ol>
<p>Depending on your environment the different teams need different access to runbook servers. To assign the grp-sco-remoteusers access to all Runbook Servers follows these steps:</p>
<ol>
<li>Start the Orchestrator Runbook Designer console as an Orchestrator administrator</li>
<li>Right-click the Runbook Servers folder and select Permissions from the context menu</li>
<li>In the Permissions for Runbook Servers dialog box, click Add and add the grp-sco-remoteusers security group from Active Directory. Click OK</li>
<li>In the Permissions for Runbook Servers dialog box, un-select all permissions for the grp-sco-remoteusers group except Read. Click Ok</li>
</ol>
<p>Your different teams will also need access to Global Settings. To give the grp-sco-remoteusers security group permissions to list Global Settings follow these steps:</p>
<ol>
<li>Start the Orchestrator Runbook Designer console as an Orchestrator administrator</li>
<li>Expand Global Settings, one by one, right-click Counters, Variables and Schedules. Select Permissions from the context menu</li>
<li>In the Permissions dialog box, click Add, add the grp-sco-remoteusers security group from Active Directory. Click OK</li>
<li>In the Permissions dialog box, select the grp-sco-remoteusers group and click Advanced</li>
<li>In the Advanced Security Settings dialog box, select the grp-sco-remoteusers security group and click Edit</li>
<li>In the Permission Entry dialog box, change Apply To to This object only, and select only List Contents and Read Properties permissions. Click OK</li>
<li>In the Advanced Security Settings dialog box, click OK 8. In the Permissions dialog box, click OK</li>
</ol>
<p>You have now configured the grp-sco-remoteusers security group with general permissions to remote connect to the Orchestrator management server with the Orchestrator Runbook Designer console. The security group doesn&#8217;t have access to anything in the Orchestrator Runbook Designer console (except Runbook Servers), when a user in this group click for example Variables an error like the own below will show.</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_02.jpg"><img class="aligncenter size-medium wp-image-2925" title="20120409_02" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_02-300x143.jpg" alt="" width="300" height="143" /></a></p>
<p>The next step is to configure permissions for the different teams, in this example the Service Manager team, group grp-sco-scsmteam. We will create a new Runbook folder where the Service Manager team can work with Runbooks.</p>
<ol>
<li>Start the Orchestrator Runbook Designer console as an Orchestrator administrator</li>
<li>Right-click the Runbooks folder and select new folder</li>
<li>Name the folder Service Manager Team</li>
<li>Right-click the Service Manager Team folder and select Permissions from the context menu</li>
<li>In the Permissions for Service Manager Team dialog box, click Add and add the grp-sco-scsmteam security group from Active Directory. Click OK</li>
</ol>
<div>
<p>The Service Manager team need access to global settings too</p>
<ol>
<li>Start the Orchestrator Runbook Designer console as an Orchestrator administrator. Navigate to Global Settings</li>
<li>Under Counters, Variables and Schedules create a folder and name it Service Manager Team</li>
<li>Right-click each new folder and select permissions from the context menu. Click Add and add the grp-sco-scsmteam security group from Active Directory. Click OK</li>
</ol>
<div>
<p> We have now created a runbook folder for the Service Manager team runbooks and then created one folder for each kind of global setting. The Service Manager team can now work with their own runbooks but cant see or modify any other runbooks or settings.</p>
<p>One thing to think about, that could result in multiple Orchestrator environments, is that the settings that are under the Options menu will be shared with everyone running the Runbook Designer console. There is no easy way to limit access to for example the Active Directory connection or the Virtual Machine Manager connection. This is something to think about when doing the security design for Orchestrator.</p>
<p><a href="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_05.jpg"><img class="aligncenter size-medium wp-image-2937" title="20120409_05" src="http://contoso.se/blog/wp-content/uploads/2012/04/20120409_05-246x300.jpg" alt="" width="246" height="300" /></a></p>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://contoso.se/blog/?feed=rss2&#038;p=2918</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

