• SCSM Engineering Team Blog

    Top Secret Trick: Easily Viewing Configuration Items and Other Work Items Related to a User

    • 4 Comments

    This is a simple trick that is a little hard to discover but can be very useful. Let’s say you are working an incident and you want to see the affected user’s configuration items (computers, etc.) or maybe you want to see if he currently has an other open active incidents that might be related to this one.  Ideally this information would be no clicks or one click away. We didn’t get quite that close but with just two clicks you can get to that information and more.  You can double click (click #1 – or does that count as two clicks? :-)  ) on any user’s name in any user picker control on a form and it will bring up the user properties dialog. If you click on the Related Items tab (click #2) you can easily see all the other work items and configuration items related to that user.

    clip_image002

  • SCSM Engineering Team Blog

    Using ObjectQueryOptions – Configuring Object retrieval from the CMDB

    • 0 Comments

    Pratibha Mallya, one of the developers on the System Center Data Access Service team has just posted a new blog post on the System Center Platform Blog about how to use some of the more advanced capabilities of the ObjectQueryOptions class.  This is useful information to know when you are getting large data sets and you want to retrieve the objects in batches, in a certain order, etc.

    http://blogs.msdn.com/b/scplat/archive/2010/09/01/using-objectqueryoptions-configuring-object-retrieval-from-the-cmdb.aspx

    Thanks Pratiha!

  • SCSM Engineering Team Blog

    Opalis SCSM Integration Pack Activties

    • 0 Comments

    Adam Hall over on the Opalis blog has listed out the activities that will come in the upcoming SCSM Integration Pack in the 6.3 release of Opalis later this year.

    As you can see below we have provided some generic activities that allow you to manipulate any kind of object in the model such as Create Object, Create Relationship, Get Object, Get Relationship, etc.  and some activities which are specific to some of the solutions such as Create Incident with Template, Get Activity, Update Activity.

    *Note that the information in this article is based on the Beta of this Integration Pack and is subject to change.  This information will be refreshed when the Integration Pack is RTM.

    The table below explains the Activities that are available with the new Opalis 6.3 Integration Pack for Service Manager.

    Activity
    Description

    Create Change With Template
    The Create Change from Template object is used to configure a change record, based on a selected template. The template must exist prior to using it in a Create Change policy.

    Create Object
    The Create Object is used to create a new Service Manager record associated with a specified class. This activity includes support for incidents and changes.

    Create Incident With Template
    The Create Incident with Template object is used to create a new Incident from an Incident Template. You have the option to overwrite Template values with existing Incident values or apply Template values.

    Create Related Object
    The Create Related Object is used to create a new Service Manager object that is related to other existing objects, either by membership or by a hosted relationship.

    Create Relationship
    The Create Relationship object is used to create a relationship between two existing entities. For example, you can create a one-to-many relationship between Incidents and Customers.

    Delete Relationship
    The Delete Relationship object is used to remove an existing Relationship between two entities.

    Get Activity
    The Get Activity object is used to query for activity records for the selected Activity Class.

    Get Object
    The Get Object is used to query for a record based on a set of filter criteria. The Get Object supports generic activity including support for incidents, changes, and activities.

    Get Relationship
    The Get Relationship is used to generate a list of related objects associated with a source object based on relationship criteria that you specify.

    Monitor Object
    The Monitor Object uses filter criteria to look for new and updated records that satisfy the criteria that you specify. Only one monitor can be used in a workflow.

    Update Activity
    The Update Activity object is used to make changes to activity records for the selected Activity Class.

    Update Object
    The Update Object is used to change the values of one or more properties in an existing Object.

    I’ve seen some really cool demos of using SCSM and Opalis together using the pre-release version of this integration pack.  Can’t wait to start showing you more of this goodness!

     

    Also, if you didn't already see it Adam also wrote a good blog post about how SCSM and Opalis are different and how they work together here.

  • SCSM Engineering Team Blog

    Notifying the Affected User When the Analyst Has Updated the Action Log

    • 5 Comments
    • Awhile back I made a post about how you can send notifications to the Affected User when the analyst clicks on the Request Input from User task.  Another common thing that people ask how to do is to send notifications to the affected user whenever the analyst updates the action log just so the affected user is kept in the loop.  That requires creating a relationship subscription which as we have shown in a previous post is only possible to create directly in XML.

      In the MP XML below I've created a notification subscription that will send a notification to the affected user whenever the action log has an analyst comment added to it.

    <ManagementPack ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <Manifest>

    <Identity>

    <ID>ActionLogAddRelationshipSubscription</ID>

    <Version>1.0.0.0</Version>

    </Identity>

    <Name>Action Log Add Relationship Subscription</Name>

    <References>

    <Reference Alias="Console">

    <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Console</ID>

    <Version>7.0.5826.859</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="NotificationsLibrary">

    <ID>System.Notifications.Library</ID>

    <Version>7.0.5826.0</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="WorkItem">

    <ID>System.WorkItem.Library</ID>

    <Version>7.0.5826.0</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="ServiceManager.IncidentLibrary">

    <ID>ServiceManager.IncidentManagement.Library</ID>

    <Version>7.0.5826.0</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="System">

    <ID>System.Library</ID>

    <Version>7.0.5826.0</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="IncidentLibrary">

    <ID>System.WorkItem.Incident.Library</ID>

    <Version>7.0.5826.0</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="Subscriptions">

    <ID>Microsoft.SystemCenter.Subscriptions</ID>

    <Version>7.0.5826.0</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    <Reference Alias="Administration">

    <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Administration</ID>

    <Version>7.0.5826.859</Version>

    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>

    </Reference>

    </References>

    </Manifest>

    <Categories>

    <Category ID="Category.ActionLogAddRelationshipSubscriptions.ManagementPack" Value="Console!Microsoft.EnterpriseManagement.ServiceManager.ManagementPack">

    <ManagementPackName>ActionLogAddRelationshipSubscription</ManagementPackName>

    <ManagementPackVersion>7.0.5826.0</ManagementPackVersion>

    </Category>

    <Category ID="Category.ActionLogAddRelationshipSubscriptionRule" Target="ActionLogAddRelationshipSubscriptionRule" Value="Administration!Microsoft.EnterpriseManagement.ServiceManager.Rules.WorkflowSubscriptions" />

    <Category ID="ActionLogAddRelationshipAffectedUserNotificationTemplate.Category" Target="ActionLogAddRelationshipAffectedUserNotificationTemplate" Value="Administration!ServiceManager.Console.NotificationManagement.NotificationTemplates.Enumeration" />

    </Categories>

    <Monitoring>

    <Rules>

    <Rule ID="ActionLogAddRelationshipSubscriptionRule" Enabled="true" Target="ServiceManager.IncidentLibrary!System.WorkItem.Incident.WorkflowTarget" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">

    <Category>System</Category>

    <DataSources>

    <DataSource ID="DS" TypeID="Subscriptions!Microsoft.SystemCenter.CmdbInstanceSubscription.DataSourceModule">

    <Subscription>

    <RelationshipSubscription RelType="$MPElement[Name='WorkItem!System.WorkItem.TroubleTicketHasAnalystComment']$" SourceType="$MPElement[Name='WorkItem!System.WorkItem.TroubleTicket']$" TargetType="$MPElement[Name='WorkItem!System.WorkItem.TroubleTicket.AnalystCommentLog']$">

    <AddRelationship />

    </RelationshipSubscription>

    <PollingIntervalInSeconds>30</PollingIntervalInSeconds>

    <BatchSize>100</BatchSize>

    </Subscription>

    </DataSource>

    </DataSources>

    <WriteActions>

    <WriteAction ID="WA" TypeID="Subscriptions!Microsoft.EnterpriseManagement.SystemCenter.Subscription.WindowsWorkflowTaskWriteAction">

    <Subscription>

    <EnableBatchProcessing>false</EnableBatchProcessing>

    <WindowsWorkflowConfiguration>

    <AssemblyName>Microsoft.EnterpriseManagement.WorkflowFoundation</AssemblyName>

    <WorkflowTypeName>Microsoft.EnterpriseManagement.WorkflowFoundation.ConfigurationWorkflow</WorkflowTypeName>

    <WorkflowParameters>

    <WorkflowParameter Name="InstanceId" Type="guid">$Data/BaseManagedEntityId$</WorkflowParameter>

    <WorkflowArrayParameter Name="UserRelationshipIdList" Type="guid">

    <Item>$MPElement[Name='WorkItem!System.WorkItemAffectedUser']$</Item>

    </WorkflowArrayParameter>

    <WorkflowArrayParameter Name="NotificationTemplateIdList" Type="guid">

    <Item>$MPElement[Name='ActionLogAddRelationshipAffectedUserNotificationTemplate']$</Item>

    </WorkflowArrayParameter>

    </WorkflowParameters>

    <RetryExceptions />

    <RetryDelaySeconds>60</RetryDelaySeconds>

    <MaximumRunningTimeSeconds>7200</MaximumRunningTimeSeconds>

    </WindowsWorkflowConfiguration>

    </Subscription>

    </WriteAction>

    </WriteActions>

    </Rule>

    </Rules>

    </Monitoring>

    <Templates>

    <ObjectTemplate ID="ActionLogAddRelationshipAffectedUserNotificationTemplate" TypeID="NotificationsLibrary!System.Notification.Template.SMTP">

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template.SMTP']/Subject$">&lt;1033&gt;Action log entry added to $Context/Property[Type='WorkItem!System.WorkItem']/Id$ &lt;/1033&gt;&lt;2057&gt;Incident ID: [$Context/Property[Type='WorkItem!System.WorkItem']/Id$] has been updated by the analyst&lt;/2057&gt;</Property>

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template.SMTP']/Priority$">2</Property>

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template.SMTP']/IsBodyHtml$">True</Property>

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template']/Content$">

     

    &lt;1033&gt;

    Details:

    Title: $Context/Property[Type='WorkItem!System.WorkItem']/Title$

    Description: $Context/Property[Type='WorkItem!System.WorkItem']/Description$

    Created By: $Context/Path[Relationship='WorkItem!System.WorkItemCreatedByUser' TypeConstraint='System!System.User']$?$DisplayName$

    &lt;/1033&gt;&lt;2057&gt;Incident Title: $Context/Property[Type='WorkItem!System.WorkItem']/Title$ &amp;lt;br/&amp;gt;

    Assigned To: $Context/Path[Relationship='WorkItem!System.WorkItemAssignedToUser' TypeConstraint='System!System.User']$?$DisplayName$?&amp;lt;br/&amp;gt;

     

    Updated action log entry: &amp;lt;br/&amp;gt;

    &amp;lt;table&amp;gt;

    &amp;lt;Group&amp;gt;

    &amp;lt;tr&amp;gt;

    &amp;lt;td&amp;gt;

    $Context/Path[Relationship='WorkItem!System.WorkItem.TroubleTicketHasAnalystComment' TypeConstraint='WorkItem!System.WorkItem.CommentLog']/Property[Type='WorkItem!System.WorkItem.CommentLog']/Comment$

    &amp;lt;/td&amp;gt;

    &amp;lt;/tr&amp;gt;

    &amp;lt;/Group&amp;gt;

    &amp;lt;/table&amp;gt;&lt;/2057&gt;</Property>

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template']/Encoding$">utf-8</Property>

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template']/SeedClass$">System.WorkItem.Incident</Property>

    <Property Path="$Context/Property[Type='NotificationsLibrary!System.Notification.Template']/Protocol$">SMTP</Property>

    </ObjectTemplate>

    </Templates>

    <LanguagePacks>

    <LanguagePack ID="ENU" IsDefault="true">

    <DisplayStrings>

    <DisplayString ElementID="ActionLogAddRelationshipSubscription">

    <Name>Action Log Add Relationship Subscription</Name>

    </DisplayString>

    <DisplayString ElementID="ActionLogAddRelationshipSubscriptionRule">

    <Name>Action log entry added to action log</Name>

    </DisplayString>

    <DisplayString ElementID="ActionLogAddRelationshipAffectedUserNotificationTemplate">

    <Name>Notify affected user that action log entry has been added to action log</Name>

    </DisplayString>

    </DisplayStrings>

    </LanguagePack>

    </LanguagePacks>

    </ManagementPack>

    Creating relationship subscriptions is actually pretty easy. You just need to follow the pattern above and replace certain configurable parameters with the correct values. I'll explain those here for reference:

    First is the Target of the Rule. Unless you know what you are doing, you should probably stick to using a workflow target from among the out of the box list of workflow targets:

    Workflow Target Class ID

    Workflow Target Class MP

    System.WorkItem.Activity.InternalWorkflowTarget

    ServiceManager.ActivityManagement.Library

    System.WorkItem.Activity.WorkflowTarget

    ServiceManager.ActivityManagement.Library

    System.WorkItem.ChangeRequest.WorkflowTarget

    ServiceManager.ChangeManagement.Library

    System.WorkItem.Incident.WorkflowTarget

    ServiceManager.IncidentManagement.Library

    System.WorkItem.Problem.WorkflowTarget

    System.WorkItem.Problem.Library

     

    You can get more information on Workflow target from this blog post if you need to do something beyond the above.

    Next is to define which RelationshipType you are subscribing to. You can get a list of the relationship type IDs from the database by using the queries provided in this blog post. Each Relationship Type has a Source Class and a Target Class. You can get those from the same blog post using SQL queries.

    Next up is to indicate which Related Users you are going to notify. Do this by indicating the relationship type which points from the class that you are notifying about (in this case the Incident class) to a System.Domain.User class. You can get the Relationship Types again using the database query post above.

    Last is to indicate which Notification Template you will use. In this case I am using a notification template defined in the same MP.

    One last note. You'll see that in this notification template I did something a little fancy. I inserted a insert tag for the Action Log (i.e. TroubleTicketHasAnalystComment relationship type). The relationship between an incident and action log comments is 1:many. So – how do you show that in a notification template? Ideally you would show a list of the action log entries. The same could be true for related configuration items, related work items, etc. In other words anything where there are many items related to the item you are notifying about.

    To deal with this we have created a special <Group> tag that can be used in the notification template. When you surround the Insert tag with the Group tag we will iterate through everything in the Group tag and repeat it for each related object.

    This is what the Group tag looks like in the notification template properties dialog:

    =================================

    Incident Title: $Context/Property[Type='WorkItem!System.WorkItem']/Title$ <br/>

    Assigned To: $Context/Path[Relationship='WorkItem!System.WorkItemAssignedToUser' TypeConstraint='System!System.User']$?$DisplayName$?<br/>

     

    Updated action log entry: <br/>

    <table>

    <Group>

    <tr>

    <td>

    $Context/Path[Relationship='WorkItem!System.WorkItem.TroubleTicketHasAnalystComment' TypeConstraint='WorkItem!System.WorkItem.CommentLog']/Property[Type='WorkItem!System.WorkItem.CommentLog']/Comment$

    </td>

    </tr>

    </Group>

    </table>

    =================================

     

    And this is what it looks like when sent in HTML.

    =================================

    Incident Title: Test Subject
    Assigned To: Aaron James
    Updated action log entry:

    test6

    test7

    test3

    test2

    test4

    test5

    testing

    =================================

    Note: per this forum thread we had there is a bug in SCSM 2010 which displays the objects in essentially random order. This has been fixed for SP1.

  • SCSM Engineering Team Blog

    How Microsoft Does Service Manager - MPSD

    • 0 Comments

    One of the first things customers ask when they evaluate Service Manager is '”Does Microsoft itself use Service Manager?”.  The answer is “Yes!”

    There are quite a few internal groups here at Microsoft that are using SCSM in production including:

    • Microsoft IT (aka MSIT)
    • MPSD – operations team that runs Microsoft.com, MSDN, TechNet, Windows Update, and other online properties
    • XBox Live
    • Microsoft Retail Stores
    • Global Marketing Operations (GMO)
    • Numerous lab teams

    Over time we hope to showcase each of these internal customers and share with you exactly what they are doing with Service Manager.

    Jim Livingston and his crew in MPSD have been working with us very closely on their implementation.  They have been in production since Beta 2 back in November of 2009.  MPSD, as do many organizations, wanted to adapt some of their existing processes to Service Manager so we helped show them how to extend the model, customize forms, create custom workflows, etc. that made the transition from their previous service management solution to Service Manager as smooth as possible.  Although they did write some code for their custom workflows, much of the extensions and customizations that MPSD have made were done by Jim or Andrew using the Authoring Tool without writing any code.

    Here’s a 15 minute video/demo that Jim put together for IT Showcase about MPSD’s deployment of Service Manager.  Sorry the video part of the demo is pretty blurry.  I recommend hitting full screen or going to the page on TechNet to download the .wmv for a little bit better view.

    Get Microsoft Silverlight

    Thanks Jim, Andrew, and all the team over at MPSD!  It’s been fun and we look forward to working with you on implementing change management and other things going forward!

  • SCSM Engineering Team Blog

    Automating IT: SCSM, SCCM, SCOM, SCVMM, Opalis – Better Together

    • 0 Comments

    Adam Hall, the Technical Product Manager for Opalis has put together an inspiring demo video of using many System Center products together to manage the process of Physical to Virtual (P2V) migrations.  The demo uses Opalis to orchestrate and automate major portions of the process which don’t really require human intervention because they are repeatable, automatable procedures that can be codified in a workflow using the drag and drop designer in Opalis. 

    Service Manager is used in this example:

    • as the mechanism for recording the action took place for reporting and auditing purposes
    • tracking the progress of the process throughout
    • for approving the changes at a certain stage in the process. 
    • The workflow will also automatically create incidents in Service Manager if any portion of the automation fails.

    Nice work Adam!  I’m loving Opalis’ integration with SCSM and the other System Center products!  Can’t wait until these integration packs are RTM!

    Adam’s original post on the Dynamic Data Center (The DDC) blog is here.

  • SCSM Engineering Team Blog

    Workflow/Notification Subscription NotEqual Criteria Across Pre/Post Condition

    • 6 Comments

    I’ve been meaning to blog this one for a while now.  Here’s the scenario…

    Customer wants to be notified (or trigger a workflow) when the property changes from X to Y.  Easily done.  Just configure the subscription to be Before Value = X and After Value = Y.

    Example:  Notify me whenever the incident urgency property changes from Medium to High looks like this:

    image image

     

    This notification will only trigger when the Urgency property changes from Medium to High.  Perfect!  Easy!

    Now, let’s say that you want to notify when the Urgency changes from anything to anything else.  How do you do that in the UI?  Believe me – people have tried all kinds of crazy things they have sent me.  :)  The answer is that you can’t do this in the UI.  Trick Question!  You can do this in XML though.  Here’s the trick….

    First – start out by creating a notification subscription (what I did for this example) or an incident event workflow rule or create a workflow rule in the authoring tool.  Here are the screenshots of what I did:

    image

    image

    Then export the MP out (see here for information on hacking XML like a pro).  Open the MP .xml file in an XML editor.  Look for the Rule in there which you created.  Inside of it you will see the criteria XML that will look like this:

                    <UpdateInstance>

     

     

     

                      <Criteria>

     

     

     

                        <Expression>

     

     

     

                          <SimpleExpression>

     

     

     

                            <ValueExpression>

     

     

     

                              <Property State="Pre">$Context/Property[Type='CustomSystem_WorkItem_Library!System.WorkItem.TroubleTicket']/Urgency$</Property>

     

     

                            </ValueExpression>

     

     

     

                            <Operator>Equal</Operator>

     

     

                            <ValueExpression>

     

     

     

                              <Value>{02625c30-08c6-4181-b2ed-222fa473280e}</Value>

     

     

                            </ValueExpression>

     

     

     

                          </SimpleExpression>

     

     

     

                        </Expression>

     

     

     

                      </Criteria>

     

     

     

                    </UpdateInstance>

     

     

     

     

    What you can see here is that the criteria is simply saying ‘Take the ‘Pre’ (i.e. before the update) value and see if that equals this GUID (represents the Medium Urgency Enum).  In other cases it might look a little different depending on your criteria.  What you need to do is change this to say ‘Compare the Pre value and the Post value. If they are not equal then trigger’.  Like this:

     

                    <UpdateInstance>

     

     

     

                      <Criteria>

     

     

     

                        <Expression>

     

     

     

                          <SimpleExpression>

     

     

     

                            <ValueExpression>

     

     

     

                              <Property State="Pre">$Context/Property[Type='CustomSystem_WorkItem_Library!System.WorkItem.TroubleTicket']/Urgency$</Property>

     

     

                            </ValueExpression>

     

     

     

                            <Operator>NotEqual</Operator>

     

     

                            <ValueExpression>

     

     

     

                              <Property State="Post">$Context/Property[Type='CustomSystem_WorkItem_Library!System.WorkItem.TroubleTicket']/Urgency$</Property>

     

     

                            </ValueExpression>

     

     

     

                          </SimpleExpression>

     

     

     

                        </Expression>

     

     

     

                      </Criteria>

     

     

     

                    </UpdateInstance>

    I changed three things:

    1) Change the Operator from Equal to NotEqual

    2) Copied the Property State = Pre line and replaced the <Value>{Guid…}</Value> line with it.

    3) In the second reference to the Property I changed the State from “Pre” to “Post”

    Now I can just reimport this MP and it should start working as expected.

    Note: As with any runtime changes you make to unsealed MPs, you’ll either need to increment the version number in the MP XML before import or restart the health service (System Center Management Service) before the change will take effect.

     

    Note2: Not surprisingly, if you do this the UI will be confused.  If you open the properties dialog to edit the subscription you will probably see an error like this:

    image

    Hint: There are other tricky things you can do in Subscription Criteria XML that you can’t do in the UI like Relationship Add/Remove subscriptions.

    My finished test/example MP is attached.

     

    Apparently this reply to @jalass is too long to put in the Comments section below so I'll just add it to the end of the blog post here:

    @jalass-

    First of all - couldnt agree with you more on this needing to be in the UI.  We'll get there.  Just couldnt build Rome in a day.

    Work Item Assigned to User is a generic relationship type between any work item class and the user class.  So - to subscribe to Change Request assignment changes you would just change:

        <RelationshipSubscription RelType="$MPElement[Name='WorkItem!System.WorkItemAssignedToUser']$" SourceType="$MPElement[Name='CoreActivity!System.WorkItem.Activity']$" TargetType="$MPElement[Name='System!System.Domain.User']$">

    to:
        <RelationshipSubscription RelType="$MPElement[Name='WorkItem!System.WorkItemAssignedToUser']$" SourceType="$MPElement[Name='CoreChangeRequest!System.WorkItem.ChangeRequest']$" TargetType="$MPElement[Name='System!System.Domain.User']$">

    In case it isnt obvious, I just changed CoreActivity!System.WorkItem.Activity to CoreChangeRequest!System.WorkItem.ChangeRequest.  In that case make sure you have an MP reference that maps 'CoreChangeRequest' to the System.WorkItem.ChangeRequest.Library MP like this:
          <Reference Alias="CoreChangeRequest">
            <ID>System.WorkItem.ChangeRequest.Library</ID>
            <Version>7.0.5826.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>

    You could do the same thing for problems by changing it to CoreProblem!System.WorkItem.Problem and adding the right reference like this:
          <Reference Alias="CoreProblem">
            <ID>System.WorkItem.Problem.Library</ID>
            <Version>7.0.5826.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>

    You can subscribe to different relationship types such as Created By and Affected User by looking up the appropriate relationship type ID and replacing that in the part that says WorkItem!System.WorkItemAssignedToUser above.  Make sure you have the right MP reference in place for the MP that you are getting the relationship type from.

    Here is the info you need for the Created By and Affected User relationship types:

    Created By Relationship Type ID: System.WorkItemCreatedByUser
    Created By Relationship Type MP ID: System.WorkItem.Library

    Affected User Relationship Type ID: System.WorkItemAffectedUser
    Affected User Relationship Type MP ID: System.WorkItem.Library

    BTW - Created By should never change.  :)

    If you want to send a notification to a group you have two options -
    1) Put the user in as the Affected User, Assigned To User and use the above approach.
    2) Create a notification subscription (Administration - Notifications - Subscriptions).  Choose the group you want to notify in the recipients page of the wizard.  Note: the group must have an associated email address.  The export the MP and change the criteria as explained in the other blog post.  Reimport the MP.

     

     

     

     

     

     

  • SCSM Engineering Team Blog

    Service Manager 2010 Authoring Tool RTM + Cumulative Update 2 (KB2193861) Released!

    • 0 Comments

     

    The Service Manager team is very pleased to announce the availability of Service Manager Authoring Tool 2010 and Service Manager Cumulative Update 2 (KB2193861) !

     Thank you for your patience in awaiting this release. Below are details about the locations for download.

    Be sure to read the installation instructions and follow the steps provided for each.

     

    Service Manager Authoring Tool 2010 RTM version

    The final release of the Service Manager Authoring Tool 2010 is available in the following 10 languages:

             English

             French

             German

             Italian

             Japanese

             Korean

             Russian

             Simplified Chinese

             Spanish

             Traditional Chinese

       

    This version of the Authoring Tool is compatible with Service Manager 2010 + Cumulative Update 2 (KB2193861). Highlights of the features in this release are:

             Class editor for creating and extending classes and relationships

    Using the Authoring Tool, users can browse, edit, extend and inherit existing and new classes and relationships. This enables our customers to easily model new classes or tailor existing ones to their needs.

             Forms designer for creation and customization of Forms

    Users can customize Forms by modifying controls on the forms, editing the look and feel as well as lay out of the forms as per their business needs. Users can also create new forms from scratch for classes that don't have specialized forms associated with them.

             Creating and customization of Workflows including several activities

    Workflow authoring piece provides our customers an easy way to automate their IT processes. The Workflow activity library consists of Active Directory activities, Virtual Machine Management activities, Service Manager activities, PowerShell, VB, batch scripting activities and control flow activities. These activities enables our customers to create rich Workflows with no almost development work.

             Management Pack bundling and sealing

    This functionality enables our customers to package and transport their authored Management Packs and associated resources like Forms, Workflows, Images in convenient Management Pack bundle.

       

    Details of all the above functionality can be found in the documentation that accompanies the Authoring Tool.

    The tool is available on Microsoft Downloads at :  http://www.microsoft.com/downloads/details.aspx?FamilyID=40b8f1b7-da63-46ae-9ca4-ef007fc3cb29

    Installation instructions are in the Authoring Guide document available as part of the downloaded package as well as at the following link: http://download.microsoft.com/download/6/C/5/6C51540C-AA37-4F16-A1B6-B395CF01343B/SM_AuthoringGuide.docx

       

    Service Manager Cumulative Update 2 (KB2193861)

    This is a rollup of fixes for System Center Service Manager 2010 and a pre-requisite for Service Manager Authoring Tool 2010.

     

    Available on Microsoft Downloads at :  http://www.microsoft.com/downloads/details.aspx?FamilyID=29ae66db-9178-4685-b973-b8be7c2c636f 

    For installation instructions and other details about this Cumulative Update, please see KB Article http://support.microsoft.com/default.aspx?scid=kb;EN-US;2193861

       

  • SCSM Engineering Team Blog

    Service Manager ‘SMLets’ CodePlex Project Expanded

    • 6 Comments

    Last week, we made a major update to the 'SMLets' CodePlex cmdlets project for Service Manager. This release is called 'Beta 1' and has been expanded from the original 3 cmdlets for incidents to 48 cmdlets and functions and a bunch of scripts. This release includes the Announcements and Remove-SCSMManagmeentPack cmdlets examples I provided earlier on the blog. The majority of the new content was provided by Jim Truher who is our resident PowerShell guru having worked on the PowerShell team during its original release. Jim also refactored the project into a PowerShell module so that we could package the scripts and cmdlets together into one neat bundle and take advantage of some of the new features in PowerShell 2.0. Accordingly, you'll need to have PowerShell 2.0 installed to use these new goodies. Also – keep in mind that these PowerShell cmdlets and scripts rely on the Service Manager SDK assemblies so you'll need to be running these either on the Service Manager Management Server or a computer where the Service Manager console is installed.

    Here's a list of all the new stuff:

    Function New-ManagementGroup
    Function import-Assembly
    Function Get-SCSMClassProperty
    Function get-SCSMCommand
    Function get-SCSMproperty
    Cmdlet Get-SCSMTask
    Cmdlet Get-SCSMSubscription
    Cmdlet Get-SCSMTypeProjection
    Cmdlet Get-SCSMTaskResult
    Cmdlet Get-SCSMUserRole
    Cmdlet Get-SCSMTopLevelEnumeration
    Cmdlet Import-SCManagementPack
    Cmdlet Remove-SCSMSubscription
    Cmdlet Remove-SCSMObject
    Cmdlet Remove-SCManagementPack
    Cmdlet Set-SCSMObject
    Cmdlet Set-SCSMIncident
    Cmdlet Set-SCSMAnnouncement
    Cmdlet New-SCSealedManagementPack
    Cmdlet New-SCManagementPack
    Cmdlet Set-SCSMObjectProjection
    Cmdlet New-SCSMObject
    Cmdlet New-SCSMIncident
    Cmdlet New-SCSMAnnouncement
    Cmdlet Get-SCSMRunAsAccount
    Cmdlet Get-SCDWWarehouseModuleTypes
    Cmdlet Get-SCDWRelationshipFactTypes
    Cmdlet Get-SCManagementPack
    Cmdlet Get-SCSMAnnouncement
    Cmdlet Get-SCManagementPackElement
    Cmdlet Get-SCDWOutriggerTypes
    Cmdlet Get-DataWarehouseConfiguration
    Cmdlet Export-SCManagementPack
    Cmdlet Get-SCDWDimensionTypes
    Cmdlet Get-SCDWMeasureTypes
    Cmdlet Get-SCDWFactTypes
    Cmdlet Get-SCSMCategory
    Cmdlet Get-SCSMRelatedObject
    Cmdlet Get-SCSMObjectProjection
    Cmdlet Get-SCSMRelationshipClass
    Cmdlet Get-SCSMRule
    Cmdlet Get-SCSMResource
    Cmdlet Get-SCSMObject
    Cmdlet Get-SCSMClass
    Cmdlet Get-SCSMChildEnumeration
    Cmdlet Get-SCSMConfigItem
    Cmdlet Get-SCSMIncident
    Cmdlet Get-SCSMEnumeration

    Thanks to Jim and Patrik Sundqvist for putting this together! This is going to be super powerful! Think about all the possibilities of using these in console tasks and workflows using the PowerShell script activity!

    You can download the beta 1 release from the CodePlex site here:

    http://smlets.codeplex.com/

    Enjoy!

  • SCSM Engineering Team Blog

    Showing the Correct Display Name for Related Objects in View Columns

    • 4 Comments

    When you create a new view in the Service Manager console, if you choose to base the view on a Combination Class (aka Type Projection), then you can choose to show properties of related objects in the column.  For example, in an incident view you might want to show the display name or user alias for the person that the incident is assigned to or who the related affected user is.

    Unfortunately, when you do this today in the Service Manager console:

    image

    You end up with a column header that shows the property display name which in this case is ‘Display Name’.  That’s not very useful and can be downright confusing when you try to show two properties of related two different related objects such as the assigned to user and the affected user like this:

    image

    Which column is which???

    Fortunately, this is fairly easy to fix by editing some XML in the management pack.  It’s a little tedious but at least it can be done.  In this blog post I’ll show you how.

    First, you need to find the MP that your view is stored in the Administration/Management Packs view.  In case you don’t know exactly which MP here are some hints: Look at just the unsealed MPs – they are the only ones that will contain views.  Then look for ‘incident’ if it is an incident view, etc.

    Once you find your MP, click Export in the task pane to export it out as an XML file and open it in some XML editor (notepad if you have to). 

    Each view has a definition that looks like this:

    image

    Notice how each column is defined and for each column the DisplayName for the column header label is bound to a ViewString by having the same identifier:

    image

    The MPElement notation there then points to a StringResource later in the XML document:

    image

    And for each StringResource in each LanguagePack there is a DisplayString:

    image

    See how each display string right now is ‘Display Name’?  That’s what we need to fix by changing it to something more meaningful like ‘Affected User’ and ‘Assigned User’:

    image

    Keep in mind that if you have multiple language packs in your MP you will need to do this for each LanguagePack.

    Now, save the MP .xml file and import the MP into SCSM – ignore the warning about losing data.  Close and reopen the console and you will see the new column header names:

    image

    That’s better!

    As long as you created your views using the Service Manager console here is a hint: to do this quickly, just grab the unique number (e.g. 4c75e….) and do a find for that in the MP XML to quickly skip to the right DisplayString element in the management pack.  You don’t really need to worry about the ViewString, StringResource mapping elements in between.

    Note: If you modify the view in any way these modifications will be reverted by the console so make sure you have the view just the way you want it before you make these changes.  If you need to make some changes you just need need to make the manual modifications again.  If you know you are going to do this ahead of time you could copy the DisplayStrings section in the XML and then just bulk replace that in the XML instead of surgically doing it one at a time.

Page 1 of 21 (210 items) 12345»