Notify Assigned to when the Affected User updates a Service Request from the SSP in SCSM 2012

August 20, 2012 Posted by Stefan Allansson

UPDATE: 05 October 2012 – Please Read

I have done a little change in my code. The original code did send an notification not only if the end user updated the action log, but also if an analyst wrote somethin in the action log from the console.
Thats not what I wanted so I have changed this part:
Old:
TargetType=”$MPElement[Name=’WorkItem!System.WorkItem.CommentLog’]$”
New:
TargetType=”$MPElement[Name=’WorkItem!System.WorkItem.TroubleTicket.UserCommentLog’]$”

—————————————————————————————————————————–

I guess we can say this is a “part 2” blog post about notifications when the end user updates a work item.
The first one that you finds here is for incidents and this is for Service Requests.

For the incident I added an incident template so we could change the status of the incident to “Updated” at same time as we sends the notification to the assigned to user.
For a Service Request I don´t want to change the status, since the status is controlled by the Activities in the Service Request. When the last activity is completed, the service request will also be completed.

I just want to send an e-mail to the assigned to user when the service request is updated by the end user.
For this I have created a similar management pack as in the blog post for incidents that I mentioned above.
I have changed it a little bit so it fits for a service request instead of an incident.
This time I add a notification template instead of a “work item template”, since I just want to send an e-mail.
I also point out the assigned to user as the recipient.

Below you can see the management pack that I have used.
You need to change the GUID (8F842F05-FDE0-31F0-1083-54E111099AA3) for the incident template to the GUID of the template that you want to use.
To get the GUID for your template, login in to your SQL Server and run this query against the ServiceManager database.(put in the display name of your template)

select Objecttemplateid from ObjectTemplate where ObjectTemplateName=’DisplayNameOfYourTemplate’

This query will probably work if you use a built in template but not if you want to use one that you created in the console.
This is because of that the ObjectTemplateName isn´t the same as the display name that your template have in the console. Use this query below instead and compare the result for date and time for when it was created and last changed with the time that you can see in the console for your template.(the time in SQL is showing GMT so the hours can differs from what you see in your console, but the minutes and seconds will be correct.

select * from ObjectTemplate

 

<ManagementPack ContentReadable=”true” SchemaVersion=”2.0″ OriginalSchemaVersion=”1.1″ xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsl=”http://www.w3.org/1999/XSL/Transform“>
  <Manifest>
    <Identity>
      <ID>LumagateServiceRequestActionLogAddRelationshipSubscription</ID>
      <Version>1.0.0.0</Version>
    </Identity>
    <Name>Lumagate Service Request Action Log Add Relationship Subscription</Name>
    <References>
      <Reference Alias=”Console”>
        <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Console</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias=”NotificationsLibrary”>
        <ID>System.Notifications.Library</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias=”WorkItem”>
        <ID>System.WorkItem.Library</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias=”System”>
        <ID>System.Library</ID>
        <Version>7.5.8501.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias=”Subscriptions”>
        <ID>Microsoft.SystemCenter.Subscriptions</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias=”Administration”>
        <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Administration</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias=”ServiceRequest”>
        <ID>ServiceManager.ServiceRequest.Library</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Categories>
    <Category ID=”Category.ActionLogAddRelationshipSubscriptions.ManagementPack” Value=”Console!Microsoft.EnterpriseManagement.ServiceManager.ManagementPack”>
      <ManagementPackName>LumagateServiceRequestActionLogAddRelationshipSubscription</ManagementPackName>
      <ManagementPackVersion>7.0.5826.0</ManagementPackVersion>
    </Category>
    <Category ID=”Category.ServiceRequestActionLogAddRelationshipSubscriptionRule” Target=”ServiceRequestActionLogAddRelationshipSubscriptionRule” Value=”Administration!Microsoft.EnterpriseManagement.ServiceManager.Rules.WorkflowSubscriptions” />
  </Categories>
  <Monitoring>
    <Rules>
      <Rule ID=”ServiceRequestActionLogAddRelationshipSubscriptionRule” Enabled=”true” Target=”ServiceRequest!System.WorkItem.ServiceRequest.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.WorkItemHasCommentLog’]$” SourceType=”$MPElement[Name=’WorkItem!System.WorkItem’]$” TargetType=”$MPElement[Name=’WorkItem!System.WorkItem.TroubleTicket.UserCommentLog’]$”>
                <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=”NotificationTemplateIdList” Type=”guid”><Item>8F842F05-FDE0-31F0-1083-54E111099AA3</Item></WorkflowArrayParameter>
    <WorkflowArrayParameter Name=”UserAliasOrRelationships” Type=”string”><Item>$MPElement[Name=’WorkItem!System.WorkItemAssignedToUser’]$</Item></WorkflowArrayParameter>
   </WorkflowParameters>
   <RetryExceptions />
   <RetryDelaySeconds>60</RetryDelaySeconds>
   <MaximumRunningTimeSeconds>1500</MaximumRunningTimeSeconds>
  </WindowsWorkflowConfiguration>
   </Subscription>
   </WriteAction>
  </WriteActions>
  </Rule>
  </Rules>
  </Monitoring>
  <LanguagePacks>
    <LanguagePack ID=”ENU” IsDefault=”true”>
      <DisplayStrings>
        <DisplayString ElementID=”LumagateServiceRequestActionLogAddRelationshipSubscription”>
          <Name>Lumagate Service Request Action Log Add Relationship Subscription</Name>
        </DisplayString>
        <DisplayString ElementID=”ServiceRequestActionLogAddRelationshipSubscriptionRule”>
          <Name>Service Request Action log entry added to action log</Name>
        </DisplayString>
      </DisplayStrings>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>

 
If you for some reson want to add a Service Request template instead of a notification template you have to change the mp a little bit. The part for <WorkflowParameters> is not the same as the mp above.
Here is a mp that works but you need to change the GUID (F473AAAF-8B64-2100-723D-40F7CF62C069) to the GUID for your own template.

<ManagementPack ContentReadable=”true” SchemaVersion=”2.0″ OriginalSchemaVersion=”1.1″ xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsl=”http://www.w3.org/1999/XSL/Transform“>
  <Manifest>
    <Identity>
      <ID>LumagateServiceRequestActionLogAddRelationshipSubscription</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=”System”>
        <ID>System.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>
      <Reference Alias=”ServiceRequest”>
        <ID>ServiceManager.ServiceRequest.Library</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Categories>
    <Category ID=”Category.ActionLogAddRelationshipSubscriptions.ManagementPack” Value=”Console!Microsoft.EnterpriseManagement.ServiceManager.ManagementPack”>
      <ManagementPackName>LumagateServiceRequestActionLogAddRelationshipSubscription</ManagementPackName>
      <ManagementPackVersion>7.0.5826.0</ManagementPackVersion>
    </Category>
    <Category ID=”Category.ServiceRequestActionLogAddRelationshipSubscriptionRule” Target=”ServiceRequestActionLogAddRelationshipSubscriptionRule” Value=”Administration!Microsoft.EnterpriseManagement.ServiceManager.Rules.WorkflowSubscriptions” />
  </Categories>
  <Monitoring>
    <Rules>
      <Rule ID=”ServiceRequestActionLogAddRelationshipSubscriptionRule” Enabled=”true” Target=”ServiceRequest!System.WorkItem.ServiceRequest.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.WorkItemHasCommentLog’]$” SourceType=”$MPElement[Name=’WorkItem!System.WorkItem’]$” TargetType=”$MPElement[Name=’WorkItem!System.WorkItem.TroubleTicket.UserCommentLog’]$”>
                <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>
                  <WorkflowParameter Name=”InstanceTemplate” Type=”guid”>F473AAAF-8B64-2100-723D-40F7CF62C069</WorkflowParameter>
      <WorkflowParameter Name=”NotificationRulesEnabled” Type=”boolean”>False</WorkflowParameter>
                </WorkflowParameters>
                <RetryExceptions />
                <RetryDelaySeconds>60</RetryDelaySeconds>
                <MaximumRunningTimeSeconds>7200</MaximumRunningTimeSeconds>
              </WindowsWorkflowConfiguration>
            </Subscription>
          </WriteAction>
        </WriteActions>
      </Rule>
    </Rules>
  </Monitoring>
  <LanguagePacks>
    <LanguagePack ID=”ENU” IsDefault=”true”>
      <DisplayStrings>
        <DisplayString ElementID=”LumagateServiceRequestActionLogAddRelationshipSubscription”>
          <Name>Lumagate Service Request Action Log Add Relationship Subscription</Name>
        </DisplayString>
        <DisplayString ElementID=”ServiceRequestActionLogAddRelationshipSubscriptionRule”>
          <Name>Service Request Action log entry added to action log</Name>
        </DisplayString>
      </DisplayStrings>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>

 

FAQ: Why do I keep getting an error saying that the object has been changed by another user or process?

August 16, 2012 Posted by Anders Asp

You have all seen it, in Service Manager 2010 and in Service Manager 2012, the error message that looks like this:

This error occurs when someone tries to update an object which has been updated by someone or something else since you initially loaded it – just as the error message itself states.

For example, a person named Carl opens an existing incident with ID IR1337, he then goes to grab a cup of coffee. While Carl is away getting coffee, another person, Stefan, opens the same incident, IR1337, and add a comment to the Action log of it. When Carl gets back to his computer to work with IR1337, he is actually sitting with an outdated version of the incident. If he make any change to this incident and then tries to save the changes by pressing Apply or Ok, the error message above will be displayed.

Now, this error appears more frequently in Service Manager 2012 and the reason for that is a new internal workflow that sets the First Assigned Date. The First Assigned Date property was added to work items so you can build Metrics and construct SLOs around the time it takes to assign the work item to someone.

So if we don’t use First Assigned date for anything, we are better of turning this workflow of in order to decrease the frequency of the error above.

How do we do this? Take a look at this blogpost written by Travis that describes how to turn of workflows with overrides:
http://blogs.technet.com/b/servicemanager/archive/2011/07/07/disabling-workflows-with-overrides.aspx

Use the SQL queries in the blogpost to get all the nescessary information and create a management pack. For those a bit lazy, here’s the complete XML code needed. The entire MP is also attached at the bottom this post.

<ManagementPack ContentReadable="true" SchemaVersion="2.0" OriginalSchemaVersion="1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <Manifest>
    <Identity>
      <ID>FirstAssignedDateOverride</ID>
      <Version>7.5.1561.0</Version>
    </Identity>
    <Name>FirstAssignedDateOverride</Name>
    <References>
      <Reference Alias="EnterpriseManagement">
        <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Console</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
	  <Reference Alias="SMIncidentLib">
        <ID>ServiceManager.IncidentManagement.Library</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
	  </Reference>
	  <Reference Alias="Administration">
        <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Administration</ID>
        <Version>7.5.1561.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Categories>
    <Category ID="Category.af8135f310fc4c3190a2544c8f514476" Value="EnterpriseManagement!Microsoft.EnterpriseManagement.ServiceManager.ManagementPack">
      <ManagementPackName>FirstAssignedDateOverride</ManagementPackName>
      <ManagementPackVersion>7.5.1561.0</ManagementPackVersion>
    </Category>
  </Categories>
 <Monitoring>
<Overrides>
  <RulePropertyOverride ID="Override_WorkItem_SetFirstAssingedTo_RelationhsipAdd_Rule" Context="SMIncidentLib!System.WorkItem.Incident.WorkflowTarget" Enforced="false" Property="Enabled" Rule="SMIncidentLib!WorkItem_SetFirstAssingedTo_RelationhsipAdd_Rule"> <Value>false</Value> </RulePropertyOverride>
 </Overrides>
 </Monitoring>
  <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
      <DisplayStrings>
        <DisplayString ElementID="FirstAssignedDateOverride">
          <Name>FirstAssignedDateOverride</Name>
          <Description />
        </DisplayString>
      </DisplayStrings>
    </LanguagePack>
  </LanguagePacks>
</ManagementPack>

Download the complete MP here:
FirstAssignedDateOverride.xml

Update Rollup 2 for SCSM 2012 released

July 24, 2012 Posted by Anders Asp

The first update to Service Manager 2012 were posted on Microsoft Download today.

Fixes in this update are:

Read more and download the update at
http://www.microsoft.com/en-us/download/details.aspx?id=30410

Lack of updates…

June 11, 2012 Posted by Anders Asp

Sorry for the lack of updates lately, but I’ve been – and still am, really busy. For instance, I’ve been working on the course material for a Service Manager 2012 course (Swedish readers, see this link for more information: http://www.cornerstone.se/Web/Templates/CoursePage.aspx?id=2513&course=COUR2009111909303400891979&epslanguage=SV) which I will be teaching tomorrow for the first time. I’ve also started writing a Service Manager book together with a couple of other SCSM geeks. Besides those two thing, I have my regular customers/projects which I have to finish before the summer holidays start.

I’ll do my best to get a couple of posts here in the near future though. I’m going to make sure Stefan posts something as well 😛

The hardest part is to get an idea on what to blog about, so feel free the post any ideas or request for blogposts!

Regards
//Anders

Application Approval Workflow (AAW)

May 3, 2012 Posted by Anders Asp

I just wanted to inform that the AAW Solutions Accelerator now is available for download on Microsoft:
http://www.microsoft.com/en-us/download/details.aspx?id=29687

What is AAW?
(text borrowed from Microsoft)

The Application Approval Workflow (AAW) extends your application approval process. End users can easily request applications on-demand directly through the Configuration Manager Application Catalog or via redirection from the Service Manager Self-Service Portal. Application requests requiring approval are routed to Service Manager where custom approver lists and activities can be configured based on user and application properties.

AAW uses System Center 2012 – Orchestrator between Configuration Manager and Service Manager to sync Configuration Manager applications, leverage Service Manager workflows, and post the approval status back to Configuration Manager. We created wizards in Service Manager to configure custom service request template-matching criteria. User and application properties received in the approval request from Configuration Manager are used to select a service request template containing an approver list and activities that best fit your business process.

Key features:

  • Sync Configuration Manager applications data into the Service Manager database.
  • Monitor and transport Configuration Manager Application Catalog requests requiring approval to Service Manager and open a service request.
  • Return the completed approval workflow status to Configuration Manager for handling.
  • Allow administrators to define and maintain application selection criteria for specific applications or application groups and specific users or user groups.
  • Track service application requests and view application catalog contents in Service Manager.

Read more on the official blog:
http://blogs.technet.com/b/servicemanager/archive/2012/03/26/application-approval-workflow-aaw-solution-accelerator-beta-now-available.aspx
http://blogs.technet.com/b/servicemanager/archive/2012/04/06/how-to-do-self-service-software-provisioning-with-system-center-2012.aspx
http://blogs.technet.com/b/servicemanager/archive/2012/04/05/demo-application-approval-workflow-aaw-solution-accelerator.aspx

Error when opening a Knowledge Article from the SSP

April 23, 2012 Posted by Anders Asp

Are you getting this error message when trying to open Knowledge Articles from the SSP?

This can be resolved quite easy by editing the Web.config file that’s located in C:\inetpub\wwwroot\System Center Service Manager Portal\ContentHost on the server that’s hosting the SSP. At the bottom of this file there is line just like this:

<add key=”ContentHostAbsoluteUri” value=”https://SRV011:443/ContentHost” />

… and in order to get this to work, you will have to make sure that the servername is specified using the FQDN of the server, just like this:

<add key=”ContentHostAbsoluteUri” value=”https://SRV011.scsm.se:443/ContentHost” />

Edit the line and save the file, then restart your browser and it should be working properly. (Please note that SRV011 is the name of my labserver; your file will include the name of your server.)

It’s official!

April 17, 2012 Posted by Anders Asp

Exchange connector v 3 RC available

April 15, 2012 Posted by Anders Asp

Short blogpost!

The Exchange connector v 3 RC is now available for download!
http://www.microsoft.com/download/en/details.aspx?id=29423

This connector is working together with SCSM 2012 and adds a handful om new features:

New features include:

  • Support for impersonation so you can now have multiple Exchange connectors monitoring different mailboxes each with their own unique configuration
  • Each user in the To/CC of each email is added as a Related configuration item to the work item
  • Works with Office 365
  • The Exchange Web Service URL to connect to can be configured instead of relying on auto discovery
  • Works with service requests
  • Any kind of work item can be created from a template – incident, service request, etc.
  • Update problem records
  • Much more detailed logging
  • Detailed event log logging is turned off by default
  • The email itself can be optionally added as an attachment to the work item

Bear in mind that this connector won’t work together with SCSM 2010 and that it is a RC (Release Candidate). Note that the Exchange connector is not supported by Microsoft.

Error when refreshing an PowerPivot Report in Excel

April 5, 2012 Posted by Stefan Allansson

In SCSM 2012 we can open an OLAP Cube in Excel and create a report by using PowerPivot. If you have the report open in Excel you can refresh the report to see updated data by right click on the report and choose Refresh. Another alternative is to refresh the report everytime you open the report by chosing Data\Properties\Refresh data when opening the file:

 

This worked as expected for me until I tried to do this as a regular helpdesk user instead of the SCSM admin account. I got an error that said the user does not have access to the DWASDataBase database, or the database does not exist.

When clicking OK I got a new error message:

I found that there was two user roles in SQL Analysis Server when I opened it in SQL Server Management Studio. The user roles was SCDW_Administrators and SCDW_Report_Readers.

When I found that I was pretty sure that this should be solved if I put in my user in the SCDW_Report_Readers role. Unfortunately it didn´t. It worked if I put in the user in SCDW_Administrators but don´t want to give the user more rights than needed. So the solution that I come up with was to create a new role with the rights to read and put in my user in that role. See below which setting I used in the role:

After I created the new role and added my account I could refresh the report. I hope this can help you to if you have the same problem.

SCSM 2012 RTM downloads

April 3, 2012 Posted by Anders Asp

The last couple of days Microsoft have published a series of SCSM 2012 RTM files for download. The most important is ofcourse SCSM 2012 RTM itself which now is available on both TechNet and MVLS.

SCSM 2012
https://technet.microsoft.com/en-us/subscriptions/securedownloads/#FileId=49006

SCSM 2012 Technical Documentation
http://www.microsoft.com/download/en/details.aspx?id=27850

SCSM 2012 Component Add-Ons and Extensions (IT-GRC and Authoring Tool)
http://www.microsoft.com/download/en/details.aspx?id=28726

SCO 2012 integration pack for SC 2012 (including SCSM 2012)
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=28725

Happy downloading!