Wednesday, November 11, 2009

FIM 2010 RC1.1 – Customizing the Request Object RCDC

One of my frustrations is tracing down the target of a request and in some cases, the parent request that caused this request to be generated. The default RCDC doesn't expose these values except within the Advanced View/Extended Attributes tab. Having the Applied Policy tab is great to see what policies this request triggered, but being able to see the target and parent request is essential – so here's how to add it yourself. At the end we'll have two new controls:
image
Here we see the Target revealed on the Detailed Content tab, we now know we had a Modify operation to a Person object type and the target was Smith, John; we can even click the hyperlink here and go look at the current status of John's object.
image
Here we see on the Applied Policy tab we've added the link to the Parent Request, also hyperlinked. In this example a Workflow configured for "Run On Policy Update" triggered a series of System Event Requests which we can examine in more detail.
image
After clicking the link we see the policy that was updated which caused this sequence of events – nifty right?
This should all be by default right? Vote here if you're signed up for the FIM Connect site.
Ok, so how do you do this yourself – it's pretty easy. I would strongly recommend applying the Update 1 packages prior to doing this as any updates has the chance of overwriting any of your customizations. So, I'll show you how to add the sections manually and provide the entire file for your consumption as well.

Warning

When editing RCDC configurations, it's always recommended to Export the current configuration and save it as an Original copy. If you get into trouble you should restore the original version, edit a copy and use the copy to upload.

Adding the Target control to the Detailed Content tab

Insert the new TargetID control between the TargetObjectType and SummaryControl controls like so:
<my:Control my:Name="TargetObjectType" my:TypeName="UocLabel" my:Caption="{Binding Source=schema, Path=TargetObjectType.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=TargetObjectType}">
<my:Properties>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=TargetObjectType, Mode=OneWay}"/>
</my:Properties>
</my:Control>
 
<my:Control my:Name="TargetID" my:TypeName="UocHyperLink" my:Caption="{Binding Source=schema, Path=Target.DisplayName}" my:Description="{Binding Source=schema, Path=Target.Description}" my:RightsLevel="{Binding Source=rights, Path=Target}">
<my:Properties>
<my:Property my:Name="ObjectReference" my:Value="{Binding Source=object, Path=Target, Mode=OneWay}"/>
</my:Properties>
</my:Control>
 
<my:Control my:Name="SummaryControl" my:TypeName="UocHtmlSummary" my:Caption="%SYMBOL_RequestContentCaption_END%" my:Description="%SYMBOL_RequestContentDescription_END%" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ModificationsXml" my:Value="{Binding Source=requestDetails, Path=DeltaXml , Mode=OneWay}"/>
<my:Property my:Name="TransformXsl" my:Value="{Binding Source=RequestDetailTransformXsl, Path=/, Mode=OneWay}"/>
</my:Properties>
</my:Control>

Adding the Parent Request control to the Applied Content tab

Insert the new ParentRequestObj control between the Policy grouping and the PolicyList control like so:
<my:Grouping my:Name="Policy" my:Caption="%SYMBOL_PolicyTabCaption_END%">
<my:Help my:HelpText="%SYMBOL_PolicyTabHelpText_END%" my:Link="cb9dbf88-0045-4e1e-ae3a-a2449ea7095a.htm#bkmk_grouping_Policy"/>

<my:Control my:Name="ParentRequestObj" my:TypeName="UocHyperLink" my:Caption="{Binding Source=schema, Path=ParentRequest.DisplayName}" my:Description="{Binding Source=schema, Path=ParentRequest.Description}" my:RightsLevel="{Binding Source=rights, Path=ParentRequest}">
<my:Properties>
<my:Property my:Name="ObjectReference" my:Value="{Binding Source=object, Path=ParentRequest, Mode=OneWay}"/>
</my:Properties>
</my:Control>

<my:Control my:Name="PolicyList" my:TypeName="UocListView" my:Caption="%SYMBOL_PolicyListCaption_END%" my:Description="%SYMBOL_PolicyListHint_END%" my:ExpandArea="true" my:RightsLevel="{Binding Source=rights, Path=ManagementPolicy}">
<my:Properties>
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName,GrantRight,AuthenticationWorkflowDefinition,AuthorizationWorkflowDefinition,ActionWorkflowDefinition"/>
<my:Property my:Name="UsageKeywords" my:Value="ManagementPolicyRule"/>
<my:Property my:Name="ResultObjectType" my:Value="ManagementPolicyRule"/>
<my:Property my:Name="TargetAttribute" my:Value="ManagementPolicy"/>
<my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=ManagementPolicy, Mode=OneWay}"/>
<my:Property my:Name="EmptyResultText" my:Value=""/>
<my:Property my:Name="PageSize" my:Value="10"/>
<my:Property my:Name="ShowActionBar" my:Value="false"/>
<my:Property my:Name="ShowPreview" my:Value="false"/>
<my:Property my:Name="ShowSearchControl" my:Value="false"/>
<my:Property my:Name="ShowTitleBar" my:Value="true"/>
<my:Property my:Name="EnableSelection" my:Value="false"/>
<my:Property my:Name="SingleSelection" my:Value="false"/>
<my:Property my:Name="ItemClickBehavior" my:Value="ModelessDialog"/>
<my:Property my:Name="ReadOnly" my:Value="true"/>
<my:Property my:Name="ListViewItemHandler" my:Value="PolicyItemHandler"/>
</my:Properties>
</my:Control>
</my:Grouping>

Build 2570 (Update 1) Files

Remember to iisreset if you can't wait for the cache to refresh.

0 comments:

Post a Comment