کد:
http://blogs.dirteam.com/blogs/jorge/archive/2010/05/21/creating-navigation-bar-links-for-a-subset-of-objects-in-fim-2010-part-1.aspx
PART-1
With FIM it is always about managing objects in a certain way. Either dynamically based upon predefined business rules or manually because you need to change/update something for that object. When managing objects it may be beneficial to have certain subsets of objects to make life a little bit easier. Examples of subsets are:
[1]
Complete Set: All Identities (based upon the Person object)
Subset: All Internal Identities (based upon the Person object with IDType Being Identity and EmployeeType being Internal)
Subset: All External Identities (based upon the Person object with IDType Being Identity and EmployeeType being External)
Subset: All Service Accounts (based upon the Person object with IDType Being ServiceAccount and EmployeeType being Internal) (of course it would also be possible to create your own ObjectType called svcAccount)
[2]
Complete Set: All Computer Systems (based upon the Computer object)
Subset: All Laptops (based upon the Computer object with ComputerType Being Laptop)
Subset: All Desktops (based upon the Computer object with ComputerType Being Desktop)
Subset: All Servers (based upon the Computer object with ComputerType Being Server)
Subset: All Workstations (based upon the Computer object with ComputerType Being Workstation)
I'm going to use the last scenario ([2]) to show how to configure this in FIM. The Navigation Bar in FIM would then look like this for the second scenario:
Let's discuss how to do this in FIM.
Because the Computer object is not available by default in FIM, you must create it first before being able to do anything else. The Display Name for that object is 'Computer Systems' The same is true for attributes needed by that object. Which attributes are needed is something you need to determine by yourself. It depends on what information you want to manage and store for that object. For this scenario the ComputerType attribute (Indexed String, Required) plays an important role. The attributes I used are:
Of course if you want to achieve the creation of the subsets for default objects or custom objects that were already created, there is no need to perform the step in defining and creating a new object with new attributes.
The next step is the creation of a Search Scope for EACH subset you have/need. So for this scenario I created 5 Search Scopes as shown below.
I'm not going to provide all the details for all the Search Scopes, but rather just two of them (Complete Set and 1 subset). With that you should understand how the other 3 are configured. To create Search Scopes, click on the "Administration" Navigation Bar Link, and then click on "Search Scopes" in the list. Click NEW.
Search Scope for the Complete Set called "All Computer Systems"
Tab "General"
I specified a "Display Name" and a "Description" for the Search Scope.
I specified "Usage Keywords" for this search scope to define the Object and the scope of the Search Scope. "Usage Keywords" are a different ballgame, but in short those can be used to assign permissions to object to be shown in the GUI and to present to same objects having the same "Usage Keywords". I must be honest here that I still do not fully understand how Microsoft has implemented their default "Usage Keywords" structure. Those aside, let's continue. The specified "Usage Keywords" will also be used in the Navigation Bar Links
I specified a number to specify the order of the Search Scope in a list of Search Scopes which are available in a drop down menu. Compare the order of the numbers in the third picture in this post with the order of the Search Scopes Shown in the picture below!
Tab "Search Definition"
For the "Attribute Searched" I specified the attributes that should be used to search against. In this case the "DisplayName" and "AccountName" attributes
For the "Search Scope Filter" I specified the XPATH filter that should the object I would like the Search Scope to return. In this case I want to return all Computer Systems. If you have specified the XPATH correctly you will not get an error and will even see results if you have objects that match the XPATH filter
Tab "Result"
For the "Resource Type" I specified the object type that is in scope of this search scope. In this case it is the custom object type Computer that I created earlier
For the "Attribute" I specified the attributes that should be returned/shown when the Search Scope is actually used. For the different Search Scopes managing the same object I suggest to specify the same list of attributes to be returned/shown. I always suggest starting with DisplayName because that's the attribute that allows to view/edit/select an object in the list. In this case I specified the following attributes to be returned/shown: DisplayName;computerName;serialNumber;computerUsed By;computerType;computerVendor;computerModel;amoun tOfRAM;harddiskSize;operatingSystem;operatingSyste mArchitecture
No need to use "Redirecting URL"
Tab "Localization"
Bot needed and not configured in this case.
After creating the Search Scope, select the just created Search Scope and open (View) it. Click on the Advanced View button and copy the Resource ID from the "Common Attributes" tab. Store it somewhere and remember it belongs to this Search Scope as you'll need it later on with the corresponding Navigation Bar Link.
Search Scope for the Complete Set called "All Computer Systems (Desktops)"
Tab "General"
I specified a "Display Name" and a "Description" for the Search Scope.
I specified "Usage Keywords" for this search scope to define the Object and the scope of the Search Scope. "Usage Keywords" are a different ballgame, but in short those can be used to assign permissions to object to be shown in the GUI and to present to same objects having the same "Usage Keywords". I must be honest here that I still do not fully understand how Microsoft has implemented their default "Usage Keywords" structure. Those aside, let's continue. The specified "Usage Keywords" will also be used in the Navigation Bar Links
I specified a number to specify the order of the Search Scope in a list of Search Scopes which are available in a drop down menu. Compare the order of the numbers in the third picture in this post with the order of the Search Scopes Shown in the picture below!
Tab "Search Definition"
For the "Attribute Searched" I specified the attributes that should be used to search against. In this case the "DisplayName" and "AccountName" attributes
For the "Search Scope Filter" I specified the XPATH filter that should the object I would like the Search Scope to return. In this case I want to return all Computer Systems that have the ComputerType set to "Desktop". If you have specified the XPATH correctly you will not get an error and will even see results if you have objects that match the XPATH filter
Tab "Result"
For the "Resource Type" I specified the object type that is in scope of this search scope. In this case it is the custom object type Computer that I created earlier
For the "Attribute" I specified the attributes that should be returned/shown when the Search Scope is actually used. For the different Search Scopes managing the same object I suggest to specify the same list of attributes to be returned/shown. I always suggest starting with DisplayName because that's the attribute that allows to view/edit/select an object in the list. In this case I specified the following attributes to be returned/shown: DisplayName;computerName;serialNumber;computerUsed By;computerType;computerVendor;computerModel;amoun tOfRAM;harddiskSize;operatingSystem;operatingSyste mArchitecture
No need to use "Redirecting URL"
Tab "Localization"
Bot needed and not configured in this case.
After creating the Search Scope, select the just created Search Scope and open (View) it. Click on the Advanced View button and copy the Resource ID from the "Common Attributes" tab. Store it somewhere and remember it belongs to this Search Scope as you'll need it later on with the corresponding Navigation Bar Link.
Continue with part 2 about this topic!
Cheers,
Jorge