Skip to main content

UniverseDataModel

This scaffolding creates, within a universe, entity instances and association instances based on a predefined template.

The scaffolding generates entity instances with the following characteristics:

  • as a display name, the display name of the corresponding navigation property, for example Main Record;
  • as an identifier, the identifier of the corresponding navigation consisting of <EntityType_Id>_<Property_Id>, for example Directory_User_MainRecord.

Properties

PropertyDetails
EntityType requiredType: String Description: Identifier of the entity type to represent in the universe (as an entity instance) with all its navigations.
Universe requiredType: String Description: Identifier of the universe in which the instances to be generated are going to exist.

Child Elements

  • ExcludedProperty (optional) to ignore a given property of the specified entity type.
  • RootInstance (optional) to rename the core entity instance that is to be generated, and to avoid data duplication when using several scaffoldings in one universe.
  • SourceEntityType (optional) Define the source EntityType
  • UniverseTemplate (optional) to use a template different from the default one.

ExcludedProperty

PropertyDetails
Property requiredType: String Description: Property of the specified entity type that is to be ignored for the generation of entity instances and association instances.
info

A scaffolding doesn't use filters, but you can exclude parts of the entity model with the ExcludedProperty argument.

The following example generates a universe U8_Users based on the entity type Directory_User, similar to U1 but without the Guests property:

<Universe Identifier="U8_Users" DisplayName_L1="U8 - Users" ColumnNamesMode="Identifier" />
<UniverseDataModel Universe="U8_Users" EntityType="Directory_User" >
<ExcludedProperty Property="Guests"/>
</UniverseDataModel>

When getting Identity Manager data in Power BI, the result shows: Universe (ExcludedProperty)

RootInstance

PropertyDetails
Instance requiredType: String Description: Identifier of the entity instance generated based on the EntityType property of the universe scaffolding. If not specified, the identifier of the entity instance is the identifier of the entity type.

The following example generates a universe U2_UserRecords based on the entity type Directory_UserRecord, naming the entity instance REC:

<Universe Identifier="U2_UserRecords" DisplayName_L1="U2 - User Records" ColumnNamesMode="Identifier" />
<UniverseDataModel Universe="U2_UserRecords" EntityType="Directory_UserRecord" >
<RootInstance Instance="REC" />
</UniverseDataModel>

Universe (RootInstance)

When getting Identity Manager data in Power BI, the result looks like this: Universe (RootInstance)

RootInstance for several scaffoldings together

info

A universe can be made of several scaffoldings which need to be grouped together a specific way. One universe made of two scaffoldings will generate the two entity instances corresponding to the two specified entity types, with the entity and association instances corresponding to their navigation properties. To avoid data duplication in the universe model, use RootInstance to rename one of the entity instances and follow the existing naming rule explained in the introduction.

&lt;Universe Identifier="U3_UserRecords" DisplayName_L1="U3 - User Records" ColumnNamesMode="Identifier" /&gt;
&lt;UniverseDataModel Universe="U3_UserRecords" EntityType="Directory_User" /&gt;
&lt;UniverseDataModel Universe="U3_UserRecords" EntityType="Directory_UserRecord" /&gt;

Universe Schema (Several Scaffoldings with Data Duplication)

When getting Identity Manager data in Power BI, the result shows: Universe (Several Scaffoldings with Data Duplication) The output shows that Directory_User_Records and Directory_UserRecords represent the same entity instances.

The following example generates a better version of the universe U3_UserRecords based on the entity types Directory_User and Directory_UserRecord, renaming Directory_UserRecord as Directory_User_Records to follow the naming rule, and building the universe model with Directory_User as the core entity instance:

&lt;Universe Identifier="U3_UserRecords" DisplayName_L1="U3 - User Records" ColumnNamesMode="Identifier" /&gt;
&lt;UniverseDataModel Universe="U3_UserRecords" EntityType="Directory_User" /&gt;
&lt;UniverseDataModel Universe="U3_UserRecords" EntityType="Directory_UserRecord" &gt;
<b>&lt;RootInstance Instance="Directory_User_Records" /&gt;</b>
&lt;/UniverseDataModel&gt;

Universe (Several Scaffoldings without Data Duplication)

When getting Identity Manager data in Power BI, the result shows: Universe (Several Scaffoldings without Data Duplication) This approach removes the duplicated data, and the navigations of the model are easy to understand.

SourceEntityType

PropertyDetails
Identifier optionalType: String Description: The identifier's SourceEntityType

UniverseTemplate

PropertyDetails
Template requiredType: String Description: Represents the argument value.

Default Template

When no template is specified, the scaffolding generates:

  • an entity instance based on a given entity type;
  • an association instance and an entity instance for each navigation property of the entity type.

The following example generates a universe U1_Users based on the entity type Directory_User:

<Universe Identifier="U1_Users" DisplayName_L1="U1 - Users" ColumnNamesMode="Identifier" />
<UniverseDataModel Universe="U1_Users" EntityType="Directory_User" />

It generates:

<Universe Identifier="U1_Users" DisplayName_L1="U1 - Users" ColumnNamesMode="Identifier" >

One entity instance for the entity type Directory_User:
<EntityInstance Identifier="Directory_User" DisplayName_L1="User" EntityType="Directory_User" />

One association instance and one entity instance per navigation property:
<AssociationInstance Association="Directory_User_MainCountry" Instance1="Directory_User" Instance2="Directory_User_MainCountry" Direction="From1To2" />
<EntityInstance Identifier="Directory_User_MainCountry" DisplayName_L1="Main Country" EntityType="Directory_Country" />
...

</Universe>

Universe (No Template)

When getting Identity Manager data in Power BI, the result shows: Universe (No Template)

info

The output displays identifiers instead of display names due to ColumnNamesMode set to identifiers.

OwnedResourceTypes

The following example generates a universe U4_User based on the entity type Directory_User, displaying the resources assigned to users:

&lt;Universe Identifier="U4_User" DisplayName_L1="U4 - User" ColumnNamesMode="Identifier"/&gt;
&lt;UniverseDataModel Universe="U4_User" EntityType="Directory_User"&gt;
<b>&lt;UniverseTemplate Template="OwnedResourceTypes"/&gt;</b>
&lt;/UniverseDataModel&gt;

It generates:

&lt;Universe Identifier="U4_User" DisplayName_L1="U4 - User" ColumnNamesMode="Identifier"&gt;

<em>One entity instance for the entity type Directory_User.</em>
&lt;EntityInstance Identifier="Directory_User" DisplayName_L1="User" EntityType="Directory_User" /&gt;

<em>Association instances and entity instances about the AD_Entry_NominativeUser resource type:</em>

&lt;EntityInstance Identifier="Directory_User_OwnedAssignedResourceTypes_AD_Entry_NominativeUser" DisplayName_L1="Assigned AD User (nominative)" EntityType="AssignedResourceType" FilterProperty="RoleId" FilterResourceType="AD_Entry_NominativeUser" /&gt;
&lt;EntityInstance Identifier="Directory_User_OwnedAssignedResourceTypes_AD_Entry_NominativeUser_Resource" DisplayName_L1="AD User (nominative)" EntityType="AD_Entry" /&gt;

&lt;AssociationInstance Association="AssignedResourceType.Resource" Direction="From1To2" Instance1="Directory_User_OwnedAssignedResourceTypes_AD_Entry_NominativeUser" Instance2="Directory_User_OwnedAssignedResourceTypes_AD_Entry_NominativeUser_Resource" /&gt;
&lt;AssociationInstance Association="AssignedResourceType.Owner" Direction="From2To1" Instance1="Directory_User_OwnedAssignedResourceTypes_AD_Entry_NominativeUser" Instance2="Directory_User" /&gt;

<em>Same for all resource types.</em>
...

&lt;/Universe&gt;

Universe (Template Schema: Owned Resource Types)

When getting Identity Manager data in Power BI, the result looks like this: Universe (Template: Owned Resource Types)

ResourceResourceTypes

The following example shows how to build a resource universe for resource types.

The following example generates a universe U5_AD based on the entity type AD_Entry, showing the owners of AD resources:

&lt;Universe Identifier="U5_AD" DisplayName_L1="U5 AD" ColumnNamesMode="Identifier"/&gt;
&lt;UniverseDataModel Universe="U5_AD" EntityType="AD_Entry"&gt;
<b>&lt;UniverseTemplate Template="ResourceResourceTypes"/&gt;</b>
&lt;/UniverseDataModel&gt;

The configuration generated by this snippet is similar to the one for OwnedResourceTypes.

Universe (Template Schema: Resource Types)

When getting Identity Manager data in Power BI, the result shows: Universe (Template: Resource Types)

OwnedSingleRoles

The following example generates a universe U6_User based on the entity type Directory_User, showing the single roles assigned to users:

&lt;Universe Identifier="U6_User" DisplayName_L1="U6 - User" ColumnNamesMode="Identifier"/&gt;
&lt;UniverseDataModel Universe="U6_User" EntityType="Directory_User"&gt;
<b>&lt;UniverseTemplate Template="OwnedSingleRoles"/&gt;</b>
&lt;/UniverseDataModel&gt;

It generates:

&lt;Universe Identifier="U6_User" DisplayName_L1="U6 - User" ColumnNamesMode="Identifier"&gt;

<em>One entity instance for the entity type Directory_User.</em>
&lt;EntityInstance Identifier="Directory_User" DisplayName_L1="User" EntityType="Directory_User" /&gt;

<em>One entity instance containing data about role assignments, and one association instance linking it to Directory_User:</em>
&lt;EntityInstance Identifier="Directory_User_OwnedAssignedSingleRoles" DisplayName_L1="Assigned Composite Roles" EntityType="AssignedSingleRole" /&gt;
&lt;AssociationInstance Association="AssignedSingleRole.Owner" Direction="From1To2" Instance1="Directory_User" Instance2="Directory_User_OwnedAssignedSingleRoles" /&gt;

<em>One entity instance containing the single roles, and one association instance linking it to the role assignment data:</em>
&lt;EntityInstance Identifier="Directory_User_OwnedAssignedSingleRoles_Role" DisplayName_L1="Composite Role" EntityType="SingleRole" /&gt;
&lt;AssociationInstance Association="AssignedSingleRole.Role" Direction="From1To2" Instance1="Directory_User_OwnedAssignedSingleRoles" Instance2="Directory_User_OwnedAssignedSingleRoles_Role" /&gt;

&lt;/Universe&gt;

Universe (Template Schema: Owned Single Roles)

When getting Identity Manager data in Power BI, the result shows: Universe (Template: Owned Single Roles)

OwnedCompositeRoles

The following example generates a universe U7_User based on the entity type Directory_User and the composite roles assigned to users:

&lt;Universe Identifier="U7_User" DisplayName_L1="U7 - User" ColumnNamesMode="Identifier"/&gt;
&lt;UniverseDataModel Universe="U7_User" EntityType="Directory_User"&gt;
<b>&lt;UniverseTemplate Template="OwnedCompositeRoles"/&gt;</b>
&lt;/UniverseDataModel&gt;

The configuration generated by this snippet is similar to the one for OwnedSingleRoles.

Universe (Template Schema: Owned Composite Roles)

When getting Identity Manager data in Power BI, the result shows: Universe (Template: Owned Composite Roles)

Mixed Example

Scaffoldings can be adjusted with universe configuration.

The following example generates a universe U9_AccessControl aiming to create reports displaying users and their profiles. In this scenario, profiles are assigned to AD accounts based on a given context. The universe is based on the entity types AD_Entry, AssignedProfile, and ProfileContext. The context has 10 dimensions, but only dimensions 0 and 1 are used, so the others are excluded. Resource types and single roles that aren't needed for this scenario are also excluded.

<Universe Identifier="U9_AccessControl" DisplayName_L1="U9_AccessControl" ColumnNamesMode="Identifier">
<EntityInstance EntityType="AD_Entry" Identifier="AssignedProfile_User"/>
</Universe>

<UniverseDataModel Universe="U9_AccessControl" EntityType="AssignedProfile"/>

<UniverseDataModel Universe="U9_AccessControl" EntityType="ProfileContext">
<RootInstance Instance="AssignedProfile_Context"/>
<ExcludedProperty Property="AssignedProfiles"/>
<ExcludedProperty Property="Category"/>
<ExcludedProperty Property="CompositeRole"/>
<ExcludedProperty Property="Dimension2"/>
<ExcludedProperty Property="Dimension3"/>
<ExcludedProperty Property="Dimension4"/>
<ExcludedProperty Property="Dimension5"/>
<ExcludedProperty Property="Dimension6"/>
<ExcludedProperty Property="Dimension7"/>
<ExcludedProperty Property="Dimension8"/>
<ExcludedProperty Property="Dimension9"/>
<ExcludedProperty Property="Dimension10"/>
<ExcludedProperty Property="ResourceType"/>
<ExcludedProperty Property="SingleRole"/>
</UniverseDataModel>

When getting Identity Manager data in Power BI, the result looks like this: Universe (Mixed Example)