FIM 2010 R2 Reporting Data Warehouse Binding

FIM 2010 R2 Reporting Data Warehouse Binding

The following will provide a better understanding for FIM 2010 R2 binding between FIM Objects and the SCSM Data Warehouse.

The schema for the FIM Reporting Store is based on data warehousing best practices including the utilization of traditional data warehousing schema. This schema differs significantly from the Entity-Attribute-Value schema used in the FIMService. The schema for the FIM Reporting Store is based on data warehousing design techniques with dimensions and facts. Because the schemas are significantly different, the ability to map FIM objects to the Data warehouse objects needs to be addressed.

The new reporting feature in Forefront Identity Manager 2010 R2 introduces the DataWarehouseBinding object to FIM. This object is used to define the mapping between the FIM Schema and the Data Warehouse schema and is represented by an xml file similar to the example below.

The following is an example of a DataWarehouseBindingObject.

<DataWarehouseBindingObject>
<DisplayName>Test Extensibility</DisplayName>
<DataWarehouseBindingIdentity>Microsoft.Forefront.IdentityManager.Datawarehouse.Test.Extensibility</DataWarehouseBindingIdentity>
<DataWarehouseMapping>
<Mapping>
<ClassBindings>
<!--
 ComputerReportObject 
--> 
<ClassBinding>
<SystemObjectAttribute ObjectTypeName="ComputerReportObject" AttributeName="CreatedTime"/>
<DataWarehouseClassProperty ClassTypeIdentity="FIMDW.FIMComputerReportObject" PropertyIdentity="FIMCreatedDate" ManagementPackIdentity="Microsoft.Forefront.IdentityManager.Datawarehouse.Test.Extensibility" ManagementPackVersion="1.0.0.1"/>
</ClassBinding>
</ClassBindings>
<RelationshipBindings>
<!--
ComputerReportObject
--> 
<RelationshipBinding>
<SystemObjectAttribute ObjectTypeName="ComputerReportObject" AttributeName="Creator"/>
<DataWarehouseRelationshipProperty RelationshipTypeIdentity="FIMDW.FIMEntityIsCreatedByEntity" ManagementPackIdentity="Microsoft.Forefront.IdentityManager.Datawarehouse.Base" ManagementPackVersion="1.0.0.1"/>
</RelationshipBinding>
</RelationshipBindings>
</Mapping>
</DataWarehouseMapping>
</DataWarehouseBindingObject>

The following table lists and defines the various items that make up the XML file that defines the Data warehouse object.

Name

Description

SystemObjectAttrbute - ObjectTypeName

Defines which FIM object is mapped

SystemObjectAttribute - AttributeName

Defines which FIM non-reference attribute is mapped

DataWarehouseClassProperty – ClassTypeIdentity

Defines which class the FIM object type will map into

DataWarehouseClassProperty – PropertyIdentity

Defines which property the FIM attribute will map into

DataWarehouseClassProperty – ManagementPackIdentity

Defines which Management Pack is used to look for the class

DataWarehouseClassProperty – ManagementPackVersion

Defines the version of the Management Pack is used to look for the class

DataWarehouseRelationshipProperty – RelationshipTypeIdentity

Defines which relationship the FIM object type will map into

DataWarehouseRelationshipProperty – PropertyIdentity

Defines which property the FIM attribute will map into

DataWarehouseRelationshipProperty – ManagementPackIdentity

Defines which Management Pack is used to look for the class

DataWarehouseRelationshipProperty – ManagementPackVersion

Defines the version of the Management Pack is used to look for the class

FIM 2010 R2 ships with two default DataWarehouseBinding objects. These are:

  1. Microsoft.Forefront.IdentityManager.Datawarehouse.Bindings.Protected – You many not remove or modify this binding in any way, as it contains bindings which are required for basic reporting functionality.

  2. Microsoft.Forefront.IdentityManager.Datawarehouse.Bindings - You may remove or modify this binding; however, it is recommended that if you want to add new data to the data warehouse that you create your own binding and manage it separately from the bindings we ship out of box.

These files are located by default in C:\Program Files\Microsoft Forefront Identity Manager\2010\Reporting\Reports

There are two kinds of mapping:

  • Class bindings

  • Relationship bindings

Class Binding

Class bindings are used to move over single valued attributes into the Data Warehouse. Take, for example, the act of moving over the EmployeeID attribute defined on the default FIM User object into the Data Warehouse. The first thing you want to do is specify which FIM object you care about. This is done using the “SystemObjectAttribute” tag as below:

<SystemObjectAttribute AttributeName="EmployeeID" ObjectTypeName="Person"/> 

This indicates that you want to move over the “EmployeeID” attribute which is defined on the “Person” object in FIM.

Next, you need to define where in the Data Warehouse you want this attribute to show up. This presumes that you already have an idea of what you want to call this object when it lands in the Data Warehouse (you can learn more about designing Data Warehouse schema in the Understanding Data Warehouse Schema section). This is done by using the “DataWarehouseClassProperty” tag as below:

<DataWarehouseClassProperty ManagementPackVersion="1.0.0.1" ManagementPackIdentity="Microsoft.Forefront.IdentityManager.Datawarehouse.Base" PropertyIdentity="FIMPersonEmployeeID" ClassTypeIdentity="FIMDW.FIMPerson"/> 

This indicates that you want the FIM attribute “EmployeeID” to be linked to the Data Warehouse class FIMDW.FIMPerson and to the property “FIMPersonEmployeeID”. The ManagementPackVersion and ManagementPackIdentity tags indicate which Management Pack you have defined the FIMDW.FIMPerson class in. These tags MUST match the version and identity you have specified at the top of your schema management pack.

The full binding example to map “EmployeeID” to the Data Warehouse can be found below. In fact, this is one of the out of box bindings that ships with FIM.

-<ClassBinding> <SystemObjectAttribute AttributeName="EmployeeID" ObjectTypeName="Person"/> <DataWarehouseClassProperty ManagementPackVersion="1.0.0.1" ManagementPackIdentity="Microsoft.Forefront.IdentityManager.Datawarehouse.Base" PropertyIdentity="FIMPersonEmployeeID" ClassTypeIdentity="FIMDW.FIMPerson"/> </ClassBinding>

Relationship Bindings

Relationship bindings are used to represent relationships between FIM objects in the Data Warehouse. A relationship in FIM can be defined in many ways. One example is the relationship called “Group Membership”, which is defined as a relationship between a user and a group, where a user is a member of a group. Another example is the relationship that is a person’s manager, which is defined as a relationship between two users, where one user is the other’s manager. There are many examples of these relationships in FIM, and moving them into the Data Warehouse allows you to track many interesting things, such as how a group membership changes over time, or how a person’s manager is modified from year to year. As such, the most accurate way to think about relationships is a way to represent FIM reference attributes in the Data Warehouse.

When creating a relationship, the first thing you want to do is to specify which FIM reference relationship you care about. Let’s say you want to represent the “ExplicitMember” relationship that defines a member of a group in FIM. This can be done by using the same “SystemObjectAttribute” tag as used in the class binding examples.

<SystemObjectAttribute ObjectTypeName="Group" AttributeName="ExplicitMember" />

This indicates that you want to represent the object to group relationship “ExplicitMember” in the Data Warehouse.

Next, you need to define where in the Data Warehouse you want to store this relationship. You can do this by using the “DataWarehouseRelationshipProperty” tag.

<DataWarehouseRelationshipProperty RelationshipTypeIdentity="FIMDW.FIMGroupHasExplicitMembers" ManagementPackIdentity="Microsoft.Forefront.IdentityManager.Datawarehouse.Base" ManagementPackVersion="1.0.0.1" />

This indicates that you want the FIM relationship “ExplicitMember” to be represented in the “FIMDW.FIMGroupHasExplicitMembers” relationship in the Data Warehouse. The ManagementPackVersion and ManagementPackIdentity tags indicate which Management Pack you have defined the FIMDW.FIMPerson class in. These tags MUST match the version and identity you have specified at the top of your schema management pack.

The full binding example to map “ExplicitMember” to the Data Warehouse can be found below. In fact, this is one of the out of box bindings that ships with FIM.

<RelationshipBinding>
<SystemObjectAttribute ObjectTypeName="Group" AttributeName="ExplicitMember" />
<DataWarehouseRelationshipProperty RelationshipTypeIdentity="FIMDW.FIMGroupHasExplicitMembers" ManagementPackIdentity="Microsoft.Forefront.IdentityManager.Datawarehouse.Base" ManagementPackVersion="1.0.0.1" />
</RelationshipBinding>