25 Customizing Oracle Identity Manager Interfaces

This chapter explains how to customize various aspects of the user interfaces available in Oracle Identity Manager.

Note:

Oracle Identity Manager 11g Release 1 (11.1.1) includes a number of UI pages based on earlier UI technologies known as transitional UIs. Due to technical differences, the transitional UIs are displayed in pop-up windows and have a different look and feel. These UIs are discussed in the relevant sections in this chapter.

This chapter contains these sections:

25.1 Branding Customization

There are three aspects to customizing the branding information: logo, logo mouser over text, and branding text. These can be customized in two ways. This section describes one way to achieve this. The other method is changing skins by using appropriate styleclasses, which is explained in "Style Sheet Modifications".

Branding customization can be done in any one of the following ways:

The advantage of using stylesheet changes and custom skins is that they are centralized changes and easier to manage.

Note that certain customizations such as branding logo mouseover text are easier to perform as described in this section.

Branding customizations can be a combination of both ways, which is using stylesheet changes and custom skins for most of the changes, and using specific file changes as described in this section for particular items such as branding logo mouseover text.

You can customize branding in the following sections:

25.1.1 Login Page

Branding changes for Login page are configured in iam-consoles-faces.war/pages/Login.jspx.

Branding Text

Branding text can be changed by modifying the value of the resource bundle property 'branding_text'. Login.jspx refers to it in the following location:

<f:facet name="branding">
  <af:outputText value="#{admin.model.resources.common.branding_text}"              id="ot1"/>
</f:facet>

The following resource bundle is used to refer to the property:

iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/Common_LOCALE.properties

Here, use the appropriate file by replacing LOCALE with the value of the locale, for example, Common_en.properties.

Tip:

  • Before modifying any file, create a backup of the file. The file you edit corresponds to a type of customization to perform with a console. For example, by editing the IdentityUIBundle_en.properties file, you change the branding text for Oracle Identity Administration.

  • If you cannot extract the JAR file, then make sure you set the PATH environment variable to point to the directory in which the Java JDK is available.

Logo Image

To change the logo image:

  1. Copy the new image, for example new-logo.png, in the oim.ear/iam-consoles-faces.war/images/ directory.

  2. Add a stylesheet class after the following line in iam-consoles-faces.war/pages/Login.jspx:

    <af:document title="#{admin.model.resources.common.title_login_page}" id="d1"                 theme="dark" maximized="true">
    

    For example:

    <af:document title="#{admin.model.resources.common.title_login_page}" id="d1"
                     theme="dark" maximized="true">
    <af:resource type="css">
                .MyCustomBrandingLogo {
                    background-image:url('/oim/images/new-logo.png');
                    background-position:center;
        background-repeat:repeat-n; display:block;
                    height:3.5em; width:119px;
                  }
       </af:resource>
    …
    
  3. Add the attribute with the name "brandingLogoCls" and value as the CSS class name inside the line:

    <af:pageTemplate viewId="/templates/IdmSignIn.jspx" value="#{bindings.pageTemplateBinding}" id="pt1">

    For example:

    <af:pageTemplate viewId="/templates/IdmSignIn.jspx" value="#{bindings.pageTemplateBinding}" id="pt1">
    <f:attribute name="brandingLogoCls" value="MyCustomBrandingLogo"/>
    …
    

Logo Mouse Over Text

To change the logo mouse over text:

  1. Extract the contents of the archive from the following location to a temporary folder.

    ORACLE_HOME/modules/oracle.idm.uishell_11.1.1/oracle.idm.uishell.war
    
  2. Create a backup of the original file.

  3. Extract the contents of the /WEB-INF/lib/oracle-idm-uishell.jar file to a temporary location.

  4. Edit the templates/IdmShell.jspx and templates/IdmSignIn.jspx files and put the required logo mouse over text (instead of the default 'Oracle') as the value of shortDesc at the following:

    <af:panelBorderLayout styleClass="AFBrandingBar" id="ptpbl1">
     <f:facet name="start">
     <af:panelGroupLayout styleClass="AFBrandingBarItem"
     inlineStyle="background-color: white;"
     id="ptpgl2">
     <af:spacer shortDesc="Oracle"
     styleClass="#{attrs.brandingLogoCls}"
     id="pts1"/>
     </af:panelGroupLayout>
    </f:facet>
    

    The code example is to help identify the location to replace. The exact code might differ a bit from this. The text to replace is inside the panel that uses the AFBrandingBarItem styleclass.

  5. Repackage the JAR file and place it in the /WEB-INF/lib/ directory of the extracted Web Archive (WAR) file.

  6. Repackage the oracle.idm.uishell.war file and place it in the original location.

    When you repackage the WAR file, you must not overwrite the MANIFEST.MF file. For example, use the following command:

    jar –cmf META-INF\MANIFEST.MF oracle.idm.uishell.war *
    

    Note:

    The MANIFEST.MF file is created whenever a WAR file is created. This file contains information about the WAR file, such as the file build number and version number.By entering m as an argument, you can force Java to retain the details that exist in the original MANIFEST.MF file. In other words, you are not overwriting the file. Oracle Identity Manager requires this information to use the contents in the oracle.idm.uishell.war file.

25.1.2 Identity Administration

Branding changes for Oracle Identity Administration are configured in admin.war/pages/Admin.jspx.

Branding Text

Branding text can be changed by modifying the value of the resource bundle property 'branding_text'. Admin.jspx refers to it in the following location:

<f:facet name="branding">
    <af:outputText value="#{resUI.branding_text}" id="ot1"/>
</f:facet>

Here, resUI refers to the following resource bundle:

admin.war/WEB-INF/lib/IdentityTaskFlow.jar/oracle/iam/identitytaskflow/resources/IdentityUIBundle_LOCALE.properties.

The branding facet takes any ADF tags, providing flexibility for your branding needs.

Logo Image

To change the logo image:

  1. Copy the new image, for example new-logo.png, in the oim.ear/iam-consoles-faces.war/images/ directory.

  2. Add a stylesheet class after the following line in admin.war/pages/Admin.jspx:

    <af:document title="#{resUI.window_title_text}" theme="dark" id="d1">
    

    For example:

    <af:document title="#{resUI.window_title_text}" theme="dark" id="d1">
    <af:resource type="css">
                .MyCustomBrandingLogo {
                    background-image:url('/oim/images/new-logo.png');
                    background-position:center;
        background-repeat:repeat-n; display:block;
                    height:3.5em; width:119px;
                  }
       </af:resource>
    …
    
  3. Add the attribute with the name "brandingLogoCls" and value as the CSS class name inside the line:

    <af:pageTemplate viewId="/templates/IdmShell.jspx" value="#{bindings.pageTemplateBinding}" id="pt1">

    For example:

    <af:pageTemplate viewId="/templates/IdmShell.jspx" value="#{bindings.pageTemplateBinding}" id="pt1">
    <f:attribute name="brandingLogoCls" value="MyCustomBrandingLogo"/>
    …
    

Logo Mouse Over Text

If you perform the steps to change the logo mouseover text for the login page as described in "Login Page", then you do not need to perform the steps in this section.

To change the logo mouseover text:

  1. Extract the archive from the following location to a temporary folder:

    ORACLE_HOME/modules/oracle.idm.uishell_11.1.1/oracle.idm.uishell.war

  2. Create a backup of the original file.

  3. Extract the WEB-INF/lib/oracle-idm-uishell.jar file to a temporary location.

  4. Edit the templates/IdmShell.jspx and templates/IdmSignIn.jspx files and put the required logo mouse over text (instead of the default 'Oracle') as the value of shortDesc, as shown:

    <af:panelBorderLayout styleClass="AFBrandingBar"
     id="ptpbl1">
     <f:facet name="start">
     <af:panelGroupLayout styleClass="AFBrandingBarItem"
     inlineStyle="background-color: white;"
     id="ptpgl2">
     <af:spacer shortDesc="Oracle"
     styleClass="#{attrs.brandingLogoCls}"
     id="pts1"/>
     </af:panelGroupLayout>
    </f:facet>
    
  5. Repackage the JAR file and put it in the WEB-INF/lib of the extracted WAR file.

  6. Repackage the oracle.idm.uishell.war file and put it back in the original location.

25.1.3 Unauthenticated Self-Service

Branding changes for the Unauthenticated Self Service UI are configured in iam-consoles-faces.war/pages/USelf.jspx.

Branding Facet

Branding text can be changed by modifying the value of the resource bundle property 'header_branding'. USelf.jspx refers to it in the following location:

<f:facet name="branding">
    <af:outputText id="brandingTitle" value="#{uself.model.resources.uself.header_branding}"/>
</f:facet>

The uself resource bundle is located in:

iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/USelf_LOCALE.properties

Logo Image

To change the logo image:

  1. Copy the new image, for example new-logo.png, in the oim.ear/iam-consoles-faces.war/images/ directory.

  2. Add a stylesheet class after the following line in iam-consoles-faces.war/pages/USelf.jspx:

    <f:facet name="metaContainer">
    

    For example:

    <f:facet name="metaContainer">
    <af:resource type="css">
                .MyCustomBrandingLogo {
                    background-image:url('/oim/images/new-logo.png');
                    background-position:center;
        background-repeat:repeat-n; display:block;
                    height:3.5em; width:119px;
                  }
    </af:resource>
    …
    
  3. In the same file, add the attribute with the name "brandingLogoCls" and value as the CSS class name inside the following line:

    <af:pageTemplate id="PANEL_PAGE" viewId="/templates/uself.jspx">
    

    For example:

    <af:pageTemplate id="PANEL_PAGE" viewId="/templates/uself.jspx">
    <f:attribute name="brandingLogoCls" value="MyCustomBrandingLogo"/>
    …
    

Logo Mouse Over Text

To change the mouse over text for the branding logo image, perform one of the following steps in the iam-consoles-faces.war/pages/USelf.jspx file:

  • Inside the line <af:pageTemplate id="PANEL_PAGE" viewId="/templates/uself.jspx">, add as static text value:

    <f:attribute name="brandingLogoText" value="My Company"/>
    
  • From the resource bundle, add the property, such as 'text_logo_mouseover', in the corresponding bundle (iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/USelf_LOCALE.properties) and use it as shown:

    <f:attribute name="brandingLogoText" value="#{uself.model.resources.uself.text_logo_mouseover}"/>
    

25.1.4 Authenticated Self Service

Branding changes for the Oracle Identity Manager Self Service are configured in iam-consoles-faces.war/pages/Self.jspx.

Branding Facet

Branding text can be changed by modifying the value of the resource bundle property 'header_branding'. Self.jspx refers to it in the following location:

<f:facet name="branding">
    <af:outputText id="brandingTitle" value="#{self.model.resources.self.header_branding}"/>
</f:facet>

The self resource bundle is located in the iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/Self_LOCALE.properties.

Logo Image

To change the logo image:

  1. Copy the new image, for example new-logo.png, in the oim.ear/iam-consoles-faces.war/images/ directory.

  2. Add a stylesheet class after the following line in iam-consoles-faces.war/pages/Self.jspx:

    <f:facet name="metaContainer">
    

    For example:

    <f:facet name="metaContainer">
    <af:resource type="css">
                .MyCustomBrandingLogo {
                    background-image:url('/oim/images/new-logo.png');
                    background-position:center;
        background-repeat:repeat-n; display:block;
                    height:3.5em; width:119px;
                  }
       </af:resource>
    …
    
  3. In the same file, add the attribute with the name "brandingLogoCls" and value as the CSS class name inside the following line:

    <af:pageTemplate id="PANEL_PAGE" viewId="/templates/self.jspx">
    

    For example:

    <af:pageTemplate id="PANEL_PAGE" viewId="/templates/self.jspx">
    <f:attribute name="brandingLogoCls" value="MyCustomBrandingLogo"/>
    …
    

Logo Mouse Over Text

To change the mouse over text for the branding logo image, perform one of the following steps in the iam-consoles-faces.war/pages/Self.jspx file:

  • Inside the line <af:pageTemplate id="PANEL_PAGE" viewId="/templates/self.jspx">, add as static text value:

    <f:attribute name="brandingLogoText" value="My Company"/>
    
  • From the resource bundle, add the property, such as 'text_logo_mouseover', in the corresponding bundle (iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/Self_LOCALE.properties) and use it as shown:

    <f:attribute name="brandingLogoText" value="#{self.model.resources.self.text_logo_mouseover}"/>
    

25.1.5 Advanced Administration

Branding changes for the Advanced Administration are configured in iam-consoles-faces.war/pages/Admin.jspx.

Branding Facet

Branding text can be changed by modifying the value of the resource bundle property 'header_branding_adv'. Admin.jspx refers to it in the following location:

<f:facet name="branding">
    <af:outputText id="brandingTitle" value="#{admin.model.resources.admin.header_branding_adv}"/>
</f:facet>

The admin resource bundle is located in iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/Admin_LOCALE.properties.

Logo Image

To change the logo image:

  1. Copy the new image, for example new-logo.png, in the oim.ear/iam-consoles-faces.war/images/ directory.

  2. Add a stylesheet class after the following line in iam-consoles-faces.war/pages/Admin.jspx:

    <f:facet name="metaContainer">
    

    For example:

    <f:facet name="metaContainer">
    <af:resource type="css">
                .MyCustomBrandingLogo {
                    background-image:url('/oim/images/new-logo.png');
                    background-position:center;
        background-repeat:repeat-n; display:block;
                    height:3.5em; width:119px;
                  }
       </af:resource>
    …
    
  3. In the same file, add the attribute with the name "brandingLogoCls" and value as the CSS class name inside the following line:

    <af:pageTemplate id="PANEL_PAGE" viewId="/templates/admin.jspx">
    

    For example:

    <af:pageTemplate id="PANEL_PAGE" viewId="/templates/admin.jspx">
    <f:attribute name="brandingLogoCls" value="MyCustomBrandingLogo"/>
    …
    

Logo Mouse Over Text

To change the mouse over text for the branding logo image, perform one of the following steps in the iam-consoles-faces.war/pages/Admin.jspx file:

  • Inside the line <af:pageTemplate id="PANEL_PAGE" viewId="/templates/admin.jspx">, add as static text value:

    <f:attribute name="brandingLogoText" value="My Company"/>
    
  • From the resource bundle, add the property, such as 'text_logo_mouseover', in the corresponding bundle (iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/Admin_LOCALE.properties) and use it as shown:

    <f:attribute name="brandingLogoText" value="#{admin.model.resources.admin.text_logo_mouseover}"/>
    

25.2 Style Sheet Modifications

This section provides instructions on style sheet updates. Topics include:

25.2.1 Introduction to the Style Sheets

Oracle ADF uses skins along with styles to customize the appearance of an application. These concepts apply to all the Oracle Identity Manager interfaces, with the exception of the Transitional UI popups.

See Also:

Before customizing style sheets, see Customizing the Appearance Using Styles and Skins in the Fusion Middleware Web User Interface Developer's Guide in the following URL:

http://download.oracle.com/docs/cd/E15523_01/web.1111/b31973/toc.htm

Following URL gives a list of all the CSS style selectors that can be used to customize the style sheets:

http://download.oracle.com/docs/cd/E15523_01/apirefs.1111/e15862/toc.htm

You configure new skins in trinidad-config.xml. The default skin for Oracle Identity Manager is "fusion":

<?xml version="1.0" encoding='utf-8'?>
<trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">
  <skin-family>fusion</skin-family>
</trinidad-config>

There are two console-specific trinidad-config.xml files:

  • For Identity Administration: admin.war/WEB-INF/trinidad-config.xml

  • For Self Service, Unauthenticated, and Advanced Administration: iam-consoles-faces.war/WEB-INF/trinidad-config.xml

25.2.2 Creating Custom Skins and Overriding Style Sheets

To keep the defaults coming from the "fusion" skin and override certain style sheet elements:

  1. Create the skin in the trinidad-skins.xml file. Make a copy of the trinidad-skins.xml from the /iam-consoles-faces.war/WEB-INF/ directory to the admin.war/WEB-INF/ directory. For both the /admin.war/WEB-INF/trinidad-skins.xml file and the /iam-consoles-faces.war/WEB-INF/trinidad-skins.xml file, make following changes:

    <?xml version="1.0" encoding='utf-8'?>
    <skins xmlns="http://myfaces.apache.org/trinidad/skin">
        <skin>
            <id>myskin.desktop</id>
            <family>myskin</family>
            <extends>fusion.desktop</extends>
            <render-kit-id>org.apache.myfaces.trinidad.desktop</render-kit-id>
            <style-sheet-name>skins/myskin/myskin.css</style-sheet-name>
            <bundle-name>oracle.iam.consoles.faces.resources.AdfComponentsMessageBundle</bundle-name>
        </skin>
    </skins>
    
  2. Register the new "myskin" in both the admin.war/WEB-INF/trinidad-config.xml file and the iam-consoles-faces.war/WEB-INF/trinidad-config.xml file, as shown:

    <?xml version="1.0" encoding='utf-8'?>
    <trinidad-config xmlns="http://myfaces.apache.org/trinidad/config">
      <skin-family>myskin</skin-family>
    </trinidad-config>
    
  3. Create myskin.css at both the admin.war/skins/myskin/myskin.css and iam-consoles-faces.war/skins/myskin/myskin.css files.

  4. Put stylesheet elements that are required to be overridden from the defaults. For example, to change the branding text color, add the following:

    .AFBrandingBarTitle, .xdj
    {
            color:#800080;
    }
    
  5. Redeploy (or update) the Oracle Identity Manager deployment through the Oracle WebLogic Server Administration Console.

To change the branding information as an alternative to the method in "Branding Customization", create a custom skin and use the appropriate style classes given in the URL in "Introduction to the Style Sheets".

25.2.3 Style Sheets in Transitional UI

This section describes how to customize the look and feel of the transitional UI in the Administrative and User Console. You do this by editing the cascading style sheets.

This section contains the following topics:

25.2.3.1 Files to Modify

To customize colors, fonts, and alignments in the transitional UI, edit the /xlWebApp/css/Xellerate.css file or the locale-specific cascading style sheets.

25.2.3.2 Customizing the Appearance of the Transitional UI

The Xellerate.css style sheet defines the color, font, point size, and alignment of the transitional UI pages. After you determine how you want to edit the appearance of the transitional UI, perform the following steps:

  1. View the source for the page.

  2. Determine the style sheet class associated with the element on the page that you want to change.

  3. Lookup the style sheet class name within the Xellerate.css file.

The Xellerate.css file contains context labels. Use these context labels to locate the class to edit when customizing a particular aspect of the transitional UI appearance. In addition, the classes within this file are organized according to the region of the screen, such as header, body, and footer, and the HTML elements they affect, such as links, tables, and check boxes.

25.3 Renaming Button Labels

This section describes how you can rename button labels in different consoles:

25.3.1 Identity Administration

The Identity Administration is made up of four main feature areas, each with their own resource bundle:

  • User Management:

    admin.war/WEB-INF/lib/IdentityTaskFlow.jar/oracle/iam/identitytaskflow/resources/IdentityUIBundle_LOCALE.properties
    
  • Organization Management:

    admin.war/WEB-INF/lib/orgmgmtTF.jar/oracle/iam/consoles/orgmgmt/tf/resources/orgmgmt-ui_LOCALE.properties
    
  • Role Management:

    admin.war/WEB-INF/lib/rolemgmtTF.jar/oracle/iam/consoles/rolemgmt/tf/resources/rolemgmt-ui_LOCALE.properties
    
  • Policy Management:

    admin.war/WEB-INF/lib/OESOIMTaskFlows.jar/oracle/iam/consoles/oesoim/tf/resources/oes-oim-ui_LOCALE.properties
    

For example, for the Policy Management UI, the following properties are set for button labels in the corresponding properties file:

button.advanced=Advanced
button.apply=Apply
button.apply.accessKey=A
button.back=Back
button.back.accessKey=B
button.cancel=Cancel
button.cancel.accessKey=C
button.edit_attribute=Edit Attributes
button.edit_attribute.accessKey=E
button.finish=Finish
button.finish.accessKey=F
button.next=Next
button.next.accessKey=N
button.ok=Ok
button.ok.accessKey=O
button.revert=Revert
button.revert.accessKey=R
button.save=Save
button.save.accessKey=S

25.3.2 Other Consoles

The common button labels for unauthenticated self service, authenticated Self Service, and Advanced Administration are set in the resource bundle

iam-consoles-faces.war/WEB-INF/lib/iam-consoles-faces.jar/oracle/iam/consoles/faces/resources/Common_LOCALE.properties

For example:

text_cancel = Cancel
description_cancel = Cancel
 
text_submit = Submit
description_submit = Submit.
 
text_reset = Reset
description_reset = Reset
 
text_previous = Back
description_previous = Back
 
text_next = Next
description_next = Next
 
text_refresh = Refresh
description_refresh = Refresh
 
text_perform = Perform
description_perform = Perform
 
text_confirm = OK
description_confirm = Confirm

Some button labels on the Self Service are also used from the iam-consoles-faces.war/WEB-INF/lib/OIMUI.jar/oracle/iam/selfservice/self/agentry/resources/Agent_LOCALE.properties file.

In Advanced Administration, many button labels are used from the Agent_LOCALE.properties file of the respective feature. For example, for the buttons in request, the file to use is Agent_LOCALE.properties in the iam-consoles-faces.war/WEB-INF/lib/OIMUI.jar/oracle/iam/request/agentry/resources/ directory.

Some buttons in this file are as follows:

Intent[BACK].name =Back
Intent[BACK].description =Back
Intent[NEXT].name =Next
Intent[NEXT].description =Next
Intent[ADD].name=Add
Intent[CANCEL].name=Cancel
Intent[CLEAR].name=Clear
Intent[SAVE].name=Save
Intent[APPLY].name=Apply
Intent[REVERT].name=Revert
Intent[PREV_RES].name=Previous Resource
Intent[NEXT_RES].name=Next Resource
Intent[CLOSE_REQ].name=Close Request
Intent[SEARCH_LKQ].name=Search
Intent[REFRESH].name=Refresh

Following is a list of the Agent properties file locations within the OIMUI.jar for some of the main features:

  • System Configuration: oracle/iam/conf/agentry/resources

  • User Configuration: oracle/iam/configservice/agentry/resources

  • Scheduler: oracle/iam/features/scheduler/agentry/resources

  • Notification Templates: oracle/iam/features/notification/agentry/resources

  • Reconciliation: oracle/iam/reconciliation/agentry/resources

  • Request: oracle/iam/request/agentry/resources

  • Request Templates: oracle/iam/requesttemplate/agentry/resources

  • Authenticated Self Service: oracle/iam/selfservice/self/agentry/resources

  • Unauthenticated Self Service: oracle/iam/selfservice/uself/agentry/resources

  • Self Service Task List: oracle/iam/tasklist/agentry/resources

25.3.3 Transitional UI Pop-ups

This section describes how to customize the descriptive text and labels that appear on the transitional UI pages of the Administrative and User Console. It also describes how to edit the error messages that appear under the specific conditions that generate them.

You can customize the following text:

  • Descriptions of procedures, such as instructional text

  • Labels for pages

  • Labels for fields within pages

  • Labels that appear on buttons

  • Labels for links to other pages

  • Copyright dates and information

This section contains the following topics:

25.3.3.1 Files to Modify

To customize the text in the transitional UI pages of the Administrative and User Console, edit the xlWebApp\WEB-INF\classes\xlWebAdmin_LOCALE.properties file or the locale-specific properties file.

There are other properties files, for example xlRichClient.properties for Workflow Visualizer and Workflow Designer, and xlDefaultAdmin.properties that is used to include generic (not specific to locale) properties such as image references.

25.3.3.2 Customizing Descriptive Text and Labels

The text displayed in the console is stored in the xlWebAdmin_LOCALE.properties file. For any label, procedural instruction, or error message that you want to edit, perform the following steps:

  1. Access the JSP page in which the text is displayed.

  2. Reference the property associated with the text.

  3. Lookup the property name in the xlWebAdmin_LOCALE.properties file.

Properties that control the text on more than one page, or that are associated with multiple product functionalities, are listed in one of the GLOBAL sections of the file, such as GLOBAL messages. These properties are also divided by type-specific labels, such as messages, buttons, and labels, to organize the groups of the properties.

The properties that control the text that is displayed in more specific contexts of the product functionality, such as create user and self-registration, are listed in sections labeled in a function-specific manner, such as MANAGE USER labels.

The width of the labels in the Workflow Visualizer are calculated by converting pixel lengths to character lengths. An incorrect conversion can result in truncated text or extra white space surrounding the label. The xlRichClient.properties file, or locale-specific file such as xlRichClient_jp.properties for Japanese, contains a property named global.workflowRenderer.labelWidthFactor. This property is used in the conversion of label text from pixel length to character length. To modify the width of labels in the Workflow Visualizer, modify the integer value that is assigned to this property. A higher integer will increase label widths, and a lower integer will decrease them.

25.4 Working with Menus and Tabs

This section explains how to add and update menus and tabs in the various sections of the Administrative and User Console.

25.4.1 Oracle Identity Administration

The top level tabs, Administration and Policy, are configured in the IDM Shell configuration file: admin.war/WEB-INF/idmshell-config.xml. For information about IDM Shell, refer to the following URL:

http://www.oracle.com/technology/products/adf/patterns/11/uishell.html

The configuration file looks like this:

<taskflows>
  <taskflow id="_oes_oim_lhs" closeable="false" indialog="false"
            taskFlowId="/taskflows/brsr/BrowseSearch-TF.xml#BrowseSearch-TF">
    <name>Browse And Search</name>
    <description>Browse And Search</description>
  </taskflow>
  <taskflow id="_oes_oim_rhs" closeable="false" indialog="false"
            taskFlowId="/taskflows/welcome/Welcome-TF.xml#Welcome-TF">
  </taskflow>
</taskflows>
<modules>
  <module id="oes_oim_mgr" helpTopicId="oim_ia_policy">
    <lhs-area>
      <taskflow refId="_oes_oim_lhs"/>
    </lhs-area>
    <default-taskflow-list>
      <taskflow refId="_oes_oim_rhs"/>
    </default-taskflow-list>
  </mLoading...odule>
</modules>

The configuration inside the <taskflow> tabs represents ADF task flows. For additional information on ADF menus, see Using Menus, Toolbars, and Toolboxes in the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework in the following URL:

http://download.oracle.com/docs/cd/E15523_01/web.1111/b31973/toc.htm

This example shows the steps needed to configure a new tab for the Identity Administration:

  1. Open the OIM_INSTALL/middleware/Oracle_IDM1/server/apps/oim.ear/admin.war/WEB-INF/idmshell-config.xml file in a text editor.

  2. In the <taskflows> tag, add a new taskflow to the list of configured task flows, giving it a unique ID. For illustration, this "new_tab" taskflow configuration will mimic that of the "Welcome" tab (admin_welcome):

    <taskflow id="new_tab" closeable="false" indialog="false"
                  taskFlowId="/taskflows/adminwelcome/AdminWelcome-taskflow.xml#AdminWelcome-taskflow">
        </taskflow>
    
  3. Scrolling down in the same file, locate the <modules> tag, and within that the <module> with ID of "admin".

  4. To the <default-taskflow-list> add a new <taskflow>, setting its refID to the taskflow ID we added earlier, namely "new_tab".

    <module id="admin">
      <lhs-area>
        <taskflow refId="usr_lhs"/>
      </lhs-area>
      <default-taskflow-list>
        <taskflow refId="admin_welcome"/>
        <taskflow refId="new_tab"/>
      </default-taskflow-list>
    </module>
    

    Note:

    Modules refer to top-level tabs, and Default-Taskflow-List entries refer to second-level tabs.
  5. Assign text for the new tab must in a properties file. Extract the file OIM_INSTALL/middleware/Oracle_IDM1/server/apps/oim.ear/admin.war/WEB-INF/lib/IdentityTaskFlow.jar to a temporary directory [WORK_DIR] using a tool such as unzip.

  6. To change the header of the Identity Administration, edit the file WORK_DIR/oracle/iam/identitytaskflow/resources/IdentityUIBundle_en.properties (or other language-specific translation files as appropriate).

  7. Add new property named "TaskFlow[new_tab].name" and assign it an appropriate name, such as "New Tab".

  8. Add new property named "TaskFlow[new_tab].description" and assign it an appropriate description, such as "New Tab Description".

    TaskFlow[new_tab].name=New Tab
    TaskFlow[new_tab].description=New Tab Description
    

    Note:

    The value within the square brackets must match the taskflow id. This is how these property values are associated with the given tab and taskflow.
  9. Change directory to WORK_DIR and repackage the files and directories under WORK_DIR by using the jar syntax:

     jar -cf IdentityTaskFlow.jar * 
    
  10. Place this new IdentityTaskFlow.jar file back in OIM_INSTALL/middleware/Oracle_IDM1/server/apps/oim.ear/admin.war/WEB-INF/lib/. Be sure to back up the original file before overwriting it.

  11. Redeploy (or update) the Oracle Identity Manager deployment through the Oracle WebLogic Server Administration Console.

25.4.2 Other Consoles

Self Service provides the ability to hide top-level tabs. In addition, Self Service UI also allows adding new custom tabs. The custom tabs can be associated with custom jsff page implementation. Hiding of the top level menus and tabs on Self Service is explained in "Disabling Features". Adding new tabs and associating custom jsff on Self Service is described in "Adding Custom ADF Tabs to Self Service".

25.5 Disabling Features

This section explains the techniques by which features can be enabled or disabled in the different consoles and user interfaces:

25.5.1 Disabling Access to Features Through the Authorization Policies

Access to many of the Identity Administration, authenticated Self Service, and Advanced Administration features is controlled by leveraging the integration between Oracle Identity Manager and Oracle Entitlements Server (OES). For features and actions managed within OES, the recommended way to disable a feature/action is to remove access to the feature by controlling the policies available to a user.

See Also:

"Managing Authorization Policies" in the Oracle Fusion Middleware User's Guide for Oracle Identity Manager for more details on creating and modifying authorization policies

For example, the users with the IT Executive - Outbound Services role in the Customer Support organization must be allowed only to search for all users and view the contact information for each user. Therefore, the buttons for creating and modifying users or roles in the left pane of the Oracle Identity Manager Self Service must be hidden for these users.

You can modify the authorization policies to hide or disable a few action buttons on the left pane of the Administrative or User Console, for which the user does not have permissions. To do so:

  1. Create an authorization policy for User Management. For details about creating an authorization policy, see "Creating an Authorization Policy for Role Management" in the Oracle Fusion Middleware User's Guide for Oracle Identity Manager.

  2. Click the Permissions tab and set the Permissions as Search User and View User Detail.

  3. For the View User Detail permission, select the attributes for contact information.

  4. Click the Data Constraints tab and set the data constraints as member of the organization, for example, Customer Support.

  5. Click the Assignment tab. This tab displays the roles that are assigned to this policy. Add the role, for example IT Executive - Outbound Services. For details about adding the role, see the step 10 of "Creating an Authorization Policy for Role Management" in the Oracle Fusion Middleware User's Guide for Oracle Identity Manager.

  6. Click Apply to save changes.

Enforcement by using the authorization service API must be placed around the User Search and View Detail action menu, buttons, or links. If access for the operation is denied to the user, then the action is not displayed or is displayed as disabled.

25.5.2 Other Administration Features

If the feature cannot be disabled by using authorization policies, then another option is to disable the corresponding ADF action tag. Most ADF action tags can be disabled or rendered invisible.

For details, see:

25.5.3 Other Consoles

Features from the Self Service can be removed by editing the iam-consoles-faces.war/WEB-INF/faces-config-self.xml file.

For example, to disable the Profile tab by hiding it in the Self Service, comment the following in the file:

  • The managed bean definition corresponding to this functionality:

    <!--managed-bean>
    <managed-bean-name>myProfilePrimaryOperation</managed-bean-name>
    ....
    <managed-bean-->
    
  • The map entry corresponding to this functionality:

    <!--map-entry>
    <key>#{myProfilePrimaryOperation.entityTypeId}</key>
    <value>#{myProfilePrimaryOperation}</value>
    </map-entry-->
    

25.6 Adding or Deleting Columns in Console Tables

This section explains how you can add or remove searchable columns in the UI. It contains these topics:

25.6.1 Identity Administration

Tables in the Identity Administration use standard ADF features. Many Advanced Search pages in the UI have an Add Field button so that the user can select from additional searchable attributes. To allow searching for users, roles, and organizations, the attribute needs to be marked as searchable in the schema.

See Also:

The ADF Tag Guide, which is available from the Oracle ADF Components Home Page.

Table 25-1 lists the jsff files with corresponding code fragments that you can modify for customizing the tables in Identity Administration:

Table 25-1 Files to Modify For Customizing Tables in Identity Administration

jsff File Code Fragment

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/advsearch/AdvancedSearchview.jsff

<af:table var="row" rowBandingInterval="0" id="t1"
 binding="#{pageFlowScope.userAdvancedSearchBean.table}"
 value="#{pageFlowScope.userAdvancedSearchBean.searchResult}"
 emptyText="#{resUI.empty_table_string}"
 columnStretching="none"
 rowSelection="multiple" fetchSize="#{pageFlowScope.userAdvancedSearchBean.fetchSize}"
selectionListener="#{pageFlowScope.userAdvancedSearchBean.tableListener.processSelection}"
sortListener="#{pageFlowScope.userAdvancedSearchBean.sortListener.processSort}"
 contextMenuId="::contextPopup2">
<af:forEach items="#{pageFlowScope.userAdvancedSearchBean.columns}"
 var="def" varStatus="defIndex">
 <c:choose>
 <c:when test="${defIndex.index == 0}">
 <af:column headerText="#{pageFlowScope.userAdvancedSearchBean.advancedSearchAttrsTranslation[def.name]}"
 sortable="true" id="c1" headerNoWrap="true"
 sortProperty="#{def.name}">
 <af:commandLink text="#{row[def.name]}" id="ot2"
actionListener="#{pageFlowScope.userAdvancedSearchBean.userLinkListener.processAction}"/>
 </af:column>
 </c:when>
 <c:otherwise>
 <af:column headerText="#{pageFlowScope.userAdvancedSearchBean.advancedSearchAttrsTranslation[def.name]}"
 sortable="true" id="c2" headerNoWrap="true"
 sortProperty="#{def.name}">
 <af:outputText value="#{row[def.name]}" id="ot3"/>
 </af:column>
 </c:otherwise>
 </c:choose>
 </af:forEach>
 </af:table> 

The #{pageFlowScope.userAdvancedSearchBean.columns} returns the list of attributes that are configured for the advanced search results attributes. If you want to change the attributes in the advanced search table for users, then change the attributes from the Advanced Console, User Configuration, Search Configuration, Search Results Table Configuration. The first attribute in the Search Results Table Configuration will be displayed as a link.

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/modifyuser/ModifyUserview.jsff

The Roles tab:

<af:treeTable binding="#{pageFlowScope.modifyUserBean.roleTreeTable}"
 value="#{pageFlowScope.modifyUserBean.treeModel}"
 var="role" rowBandingInterval="1" id="ROLES_DATA"
 rowSelection="single" columnStretching="last"
 fetchSize="9" contentDelivery="immediate"
 selectionListener="#{pageFlowScope.modifyUserBean.roleSelected}"
 immediate="true" width="100%">
<f:facet name="nodeStamp">
 <af:column sortable="true" width="350" sortProperty="roleDisplayName"
 headerText="#{resUI.role_display_name_text}" id="c1">
 <!--<af:group>-->
 <!--<af:image source="/images/group_ena.png"/> -->
 <af:outputText value="#{role.roleDisplayName}" id="ot52"/>
 <!--</af:group>-->
 </af:column>
 </f:facet>

<af:column sortable="false" width="250"
 headerText="#{resUI.role_name_text}"
 align="start" id="c72">
 <af:outputText value="#{role.roleName}" id="ot12"/>
 </af:column>
 <af:column sortable="false" width="250"
 headerText="#{resUI.role_descripetion_text}"
 align="start" id="c7">
 <af:outputText value="#{role.description}" id="ot11"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.role_namespace_text}"
 align="start" id="c71">
 <af:outputText value="#{role.roleNameSpace}" id="ot111"/>
 </af:column>
 <!--af:column sortable="false"
 headerText="#{resUI.role_assigned_on_text}"
 align="start" id="c6">
 <af:outputText value="#{role.provisionedOn}" id="ot1"/>
 </af:column-->
 </af:treeTable>

The Roles tab contains static columns that can be rearranged or removed based on your requirement. The role objects are instances of oracle.iam.identitytaskflow.common.model.vo.RoleDetailVO with the following methods:

public String getRoleName()
public String getProvisionedOn()
public String getMembershipType()
public String getDescription()
public List<RoleDetailVO> getChildren()
public String getRoleKey()
public String getRoleDisplayName()
public String getRoleNameSpace()

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/modifyuser/ModifyUserview.jsff

The Resources tab:

<af:table var="row" columnStretching="last"
 summary="#{resUI.resources_table_summary_text}"
 contentDelivery="immediate"
 binding="#{pageFlowScope.modifyUserBean.resourceTable}"
 fetchSize="60" id="t3"
 emptyText="#{resUI.empty_table_string}"
 value="#{pageFlowScope.modifyUserBean.resources}"
 rowSelection="single"
selectionListener="#{pageFlowScope.modifyUserBean.showSelectedResourceDetailsAction}">
 
 <af:column sortable="true"
 headerText="#{resUI.resource_name_text}"
 align="start" id="c6">
 <af:commandLink id="com1" text="#{row.resourceName}" partialSubmit="true"
actionListener="#{pageFlowScope.modifyUserBean.showResourceDetailsReadOnlyAction}"
 disabled="#{row.viewActionDisable}"/>
 </af:column>
 <af:column sortable="false" headerText="#{resUI.resource_type_text}" 
 align="start" id="c3">
 <af:outputText value="#{row.type}" id="ot6"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.resource_status_text}"
 align="start" id="c4">
 <af:outputText value="#{row.status}" id="ot7"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.resource_provisioned_text}"
 align="start" id="c5">
 <af:outputText value="#{row.provisionedOn}" id="ot8"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.resource_request_key_text}"
 align="start" id="c52">
 <af:outputText value="#{row.requestId}" id="ot82"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.resource_service_account}"
 align="start" id="c53">
 <af:outputText value="#{row.serviceAccount}" id="ot84"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.resource_description_text}"
 align="start" id="c51">
 <af:outputText value="#{row.descriptiveData}" id="ot81"/>
 </af:column>
 </af:table>

The Resources tab contains static columns that can be rearranged or removed based on your requirement. The row objects are instances of oracle.iam.identitytaskflow.common.model.vo.ResourceDetailVO and the following methods:

public String getResourceName()
public String getStatus()
public String getProvisionedOn()
public String getType()
public String getProcessInstanceKey()
public String getResourceUserKey()
public String getResourceKey()
public String getObjectInstanceForUserKey()
public String getTaskArchived()
public String getDescriptiveData()
public String getRequestId()
public String getServiceAccount()

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/modifyuser/ModifyUserview.jsff

The Proxy tab:

<af:table var="row" rowBandingInterval="0" id="t5"
 contentDelivery="lazy"
 binding="#{pageFlowScope.modifyUserBean.proxyTable}"
 emptyText="#{resUI.empty_table_string}"
 value="#{pageFlowScope.modifyUserBean.proxyList}"
selectionListener="#{pageFlowScope.modifyUserBean.proxySelectionAction}"
 columnStretching="last" rowSelection="single">
<af:column sortable="true"
 headerText="#{resUI.proxy_name_text}" id="c9"
 sortProperty="proxyName">
 <af:commandLink text="#{row.proxyName}" id="ot4"
actionListener="#{pageFlowScope.modifyUserBean.openProxyDetailPageAction}"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.proxy_start_date_text}"
 id="c13">
 <af:outputText value="#{row.startDate}" id="ot2"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.proxy_end_date_text}" id="c10">
 <af:outputText value="#{row.endDate}" id="ot14"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.proxy_status_text}" id="c11">
 <af:outputText value="#{row.status}" id="ot13"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.proxy_relationship_text}"
 id="c12">
 <af:outputText value="#{row.relationship}" id="ot15"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.proxy_last_updated_text}"
 id="c8">
 <af:outputText value="#{row.lastUpdated}" id="ot10"/>
 </af:column>
 </af:table>

The Proxy tab contains static columns that can be rearranged or removed based on your requirement. The row objects are instances of oracle.iam.identitytaskflow.common.model.vo.ProxyDetailVO and the following methods:

public String getStartDate()
public String getEndDate()
public String getStatus()
public String getRelationship()
public String getLastUpdated()
public String getProxyName()
public String getProxyKey()
public String getProxyNameUserKey()
public String getLoginUserKey()
public String getLoginUserName()
public String getRequestId()
public String getServiceAccount()

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/modifyuser/ModifyUserview.jsff

The Direct Reports tab:

<af:table value="#{pageFlowScope.modifyUserBean.reportList}"
 var="row" fetchSize="60"
 binding="#{pageFlowScope.modifyUserBean.directReportiesTable}"
 emptyText="#{resUI.empty_table_string}"
 rowSelection="single" id="t6"
selectionListener="#{pageFlowScope.modifyUserBean.directReportSelectedAction}"
 columnStretching="last">
 <af:column sortProperty="Name" sortable="false"
 headerText="#{resUI.username_header_text}"
 id="column1">
 <af:outputText value="#{row.userDisplayName}" id="outputText1"/>
 </af:column>
 <af:column sortProperty="Name" sortable="false"
 headerText="#{resUI.userlogin_header_text}"
 id="column2">
 <af:outputText value="#{row.username}" id="outputText2"/>
 </af:column>
 <af:column sortProperty="Status" sortable="false"
 headerText="#{resUI.status_header_text}"
 id="column4">
 <af:outputText value="#{row.identityStatus}"
 id="outputText3"/>
 </af:column>
 <af:column sortProperty="Org" sortable="false"
 headerText="#{resUI.organization_header_text}"
 id="column5">
 <af:outputText value="#{row.organization}" id="outputText4"/>
 </af:column>
 </af:table>

The Direct Reports tab contains static columns that can be rearranged or removed based on your requirement. The row objects are instances of oracle.iam.identitytaskflow.common.model.vo.ReportDetailVO and the following methods:

public String getUsername()
public String getFirstName()
public String getLastName()
public String getStatus()
public String getOrganization()
public String getEmail()
public String getPhone()
public String getGlobalID()
public String getIdentityStatus()
public String getAccountStatus()
public String getUserDisplayName()

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/modifyuser/ModifyUserview.jsff

The Requests tab:

<af:table var="row" rowBandingInterval="1" id="t8"
 columnStretching="column:column7" rowSelection="single"
 emptyText="#{resUI.empty_table_string}"
 value="#{pageFlowScope.modifyUserBean.requestList}"
 binding="#{pageFlowScope.modifyUserBean.requestsTable}">
 <af:column sortable="true" sortProperty="requestID"
 headerText="#{resUI.request_id_header_text}" id="c14">
 <af:commandLink text="#{row.requestID}" id="cl1"
actionListener="#{pageFlowScope.modifyUserBean.showSelectedRequestDetailsAction}"/>
 </af:column>
 <af:column sortable="true" sortProperty="modelName"
 headerText="#{resUI.request_model_name_header_text}"
 id="c17" noWrap="false">
 <af:outputText value="#{row.modelName}" id="ot18"/>
 </af:column>
 <af:column id="c18" headerText="#{resUI.request_status_text}"
 noWrap="false">
 <af:outputText value="#{row.status}" id="ot23"/>
 </af:column>
 <af:column sortable="true" sortProperty="requestedBy"
 headerText="#{resUI.request_requested_by_header_text}"
 id="c15">
 <af:outputText value="#{row.requestedBy}" id="ot19"/>
 </af:column>
 <af:column sortable="false"
 headerText="#{resUI.request_parent_id_header_text}"
 id="c16">
 <af:outputText value="#{row.parentID}" id="ot20"/>
 </af:column>
 <af:column sortable="false" headerText="#{resUI.request_date_requested_header_text}" id="column6">
 <af:outputText value="#{row.dateRequested}" id="ot21"/>
 </af:column>
 </af:table>

The Requests tab contains static columns that can be rearranged or removed based on your requirement. The row objects are instances of oracle.iam.identitytaskflow.common.model.vo.RequestDetailVO and the following methods:

public String getRequestID()
public String getRequestedBy()
public String getParentID()
public String getDateRequested()
public String getModelName()
public String getStatus()

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/rolepicker/RolePicker.jsff

<af:table binding="#{pageFlowScope.rolePickerBean.table}"
 value="#{pageFlowScope.rolePickerBean.results}" var="row"
 emptyText="#{resUI.empty_table_string}" id="t1"
 inlineStyle="width:inherit;" rowSelection="multiple"
 columnBandingInterval="1" columnStretching="first"
 fetchSize="40"
selectionListener="#{pageFlowScope.rolePickerBean.roleSelectAction}">
 <af:column headerText="" id="c0" rowHeader="true" width="18px"/>
 <af:column headerText="#{resUI.role_display_name_text}" id="c3"
 headerNoWrap="true">
 <af:outputText value="#{row.roleDisplayName}" id="ot5"/>
 </af:column>
 <af:column headerText="#{resUI.role_namespace_text}" id="c1"
 headerNoWrap="true">
 <af:outputText value="#{row.roleNameSpace}" id="ot3"/>
 </af:column>
 <af:column headerText="#{resUI.role_name_text}" id="c2"
 headerNoWrap="true">
 <af:outputText value="#{row.roleName}" id="ot4"/>
 </af:column>
 </af:table>

The columns of the role picker popup can be rearranged or removed based on your requirement. The role objects are instances of oracle.iam.identitytaskflow.common.model.vo.RoleDetailVO with the following methods:

public String getRoleName()
public String getProvisionedOn()
public String getMembershipType()
public String getDescription()
public List<RoleDetailVO> getChildren()
public String getRoleKey()
public String getRoleDisplayName()
public String getRoleNameSpace()

admin.war/WEB-INF/lib/IdentityTaskflow.jar/taskflows/search/SimpleSearchview.jsff

<af:table var="row" rowBandingInterval="0" id="t4"
 binding="#{pageFlowScope.simpleSearchBean.table}"
 value="#{pageFlowScope.simpleSearchBean.searchResult}"
 emptyText="#{resUI.empty_table_string}"
 columnStretching="last"
 rowSelection="multiple"
 fetchSize="#{pageFlowScope.simpleSearchBean.tableFetchSize}"
selectionListener="#{pageFlowScope.simpleSearchBean.processSelection}"
sortListener="#{pageFlowScope.simpleSearchBean.tableSortListener.processSort}">
 .......
 <af:column headerText="#{pageFlowScope.simpleSearchBean.headerText}"
 sortable="true" id="c1"
 headerNoWrap="true"
 sortProperty="#{pageFlowScope.simpleSearchBean.sortProperty}">
 <af:commandLink text="#{row[pageFlowScope.simpleSearchBean.sortProperty]}" id="ot2"
actionListener="#{pageFlowScope.simpleSearchBean.userLinkListener.processAction}"/>
 </af:column>
 </af:table>

The oracle.iam.identitytaskflow.backing.taskflows.search.SimpleSearchView getSearchResult() method returns a list of strings to display in the simple search table for users. The attribute whose value has to be displayed is determined in the following order from the attributes defined in the Advanced Administration, User Configuration, Search Configuration, Simple Search Attributes:

  1. Display name

  2. User Login

  3. User Key

  4. The first attribute entry in the Advanced Administration, User Configuration, Search Configuration, Simple Search Attributes


On the Authorization Policy tab, the advanced search feature is managed through the admin.war/WEB-INF/lib/OESOIMTaskFlows.jar/taskflows/advsrh/AdvancedSearch.jsff file. The contents of this file is as shown:

<af:table var="row" columnStretching="last" id="shTable"
          rowSelection="single" columnSelection="single"
          contentDelivery="immediate"
          summary="#{props['padvsrc.tabs.browse.columns.summary']}"
          binding="#{pageFlowScope.advancedSearchBean.searchTableBinding}"
          selectionListener="#{pageFlowScope.advancedSearchBean.selectSearchRow}"
          emptyText="#{props['brsr.tabs.advsrch.emptyText']}"
          shortDesc="#{props['brsr.tabs.advsrch.shortDesc']}"
          value="#{pageFlowScope.advancedSearchBean.searchResultsModel}"
          partialTriggers=":q2"
          columnBandingInterval="1">
...
  <af:column sortable="true"
             sortProperty="authzPolicy.displayName"
             headerText="#{props['padvsrc.columns.policy_name.headerText']}"
             width="200" noWrap="false" align="start" id="c1">
    <af:outputText value="#{row.authzPolicy.displayName}" id="ot2"/>
  </af:column>

The row objects are instances of oracle.iam.consoles.oesoim.tf.base.PolicyTableModel.SearchWrapper with getter methods:

public AuthzPolicy getAuthzPolicy()
public boolean getHasAssignment()
public boolean getHasAssignment()
public String getAssignment()
public boolean getHasPermissions()
public String getFirstPermission()
public String getPermissions()

25.6.2 Transitional UI

In the transitional UI pages of the Administrative and User Console, when you click a menu item to perform tasks, such as managing access policies, a search page is displayed. For example, when you click the Manage link under the Access Policies menu item, the Manage Access Policies page is displayed with two drop-down menus for searching access policies. You can customize the number of drop-down menus, and what the items in the drop-down menus are.

When the search results display, you can determine the maximum number of rows in the results table displayed on each page. After a user selects an item from the results table, a detail page is displayed such as the Resource Detail page. The detail page contains an additional details menu. You can customize the items in these menus.

This section contains the following topics:

25.6.2.1 Customizing Search Drop-Down Item

Use the Design Console to change the lookup codes for search pages and additional details. To customize drop-downs:

  1. Log in to the Design Console.

  2. Open the Lookup Definition form by navigating to Administration, then to Lookup Definition.

  3. Search to locate the desired lookup definition.

    Tip:

    For your search criteria, use lookup.webclient* search to find the search pages, or *additional_details to find the additional details.
  4. Make the desired changes to the lookup codes to set the options displayed in the drop-down menu for each search page.

    • The Code Key is the metadata for each column.

    • The Decode value is what is displayed in the Administrative and User Console.

    • The order the items appear in the Code Key list are the order they appear in the Administrative and User Console drop-down list. If you delete an entry and add it back, it is displayed last in the list.

  5. Save your changes.

25.6.2.2 Customizing Number of Search Drop-Down Items and Search Results

To change the number of drop-down menus, and the maximum number of search results on each page, edit the xlDefaultAdmin.properties file.

To set the number of drop-down menus:

  1. Open the xlDefaultAdmin.properties file.

  2. Locate the property from Table 25-2, and edit it as required.

    Table 25-2 Properties that Determine the Number of Menus on a Search Page

    Property Name Default Page

    global.property.numsearchaccesspolicyfields

    2

    Access Policies

    global.property.numsearchresourcefields

    2

    Search Resources

    global.property.numsearchattestationprocessfields

    3

    Attestation Process


  3. To change the maximum number of search results on each page, change the value of the property global.displayrecordNum.value to the desired value. The default value is 10.

  4. Save the file.

  5. Restart Oracle Identity Manager.

25.7 Data Customization

This section explains how you can customize form templates in various consoles. It contains these topics:

25.7.1 Advanced Administration

You can modify request templates to customize the request attributes for self-registration and request forms.

For details, see "Managing Request Templates" in the Oracle Fusion Middleware User's Guide for Oracle Identity Manager.

25.7.2 Unauthenticated Self Service

You can customize the template used for self-registration by specifying template attributes in the SelfCreateUserDataSet.xml file. This both renders the attributes and also specifies the restrictions.

25.7.3 Authenticated Self Service

You can configure the user form to show or hide attributes from the My Profile page by means of the User Configuration UI.

The steps needed to display an attribute on the My Profile page are as follows:

  1. Review the My Profile page to determine the desired customization.

  2. Go to the Advanced Administration, and under Configuration, click User Configuration.

  3. From the Actions menu, select User Attributes.

  4. Select the attribute you want to show on the My Profile page, and from the Actions menu, select Modify Attribute.

  5. Change the visibility to Yes, and click Save.

    The My Profile page will now render this attribute.

Similar steps can be used to hide attributes on the page.

25.8 Injecting Custom URLs

This section explains how to inject customized URLs into the consoles. Topics include:

25.8.1 Custom URLs for the Identity Administration

The Identity Administration has been developed as ADF Task Flows. The .jsff files in the task flows can be modified to inject custom URLs. See the chapter titled Working with Navigation Components in the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework in the following Web site:

http://download.oracle.com/docs/cd/E15523_01/web.1111/b31973/toc.htm

25.8.2 Custom URLs for Other Consoles

In the unauthenticated self service, authenticated Self Service, and Advanced Administration, there are two options for injection of custom URLs.

The pages in the unauthenticated Self Service, authenticated Self Service, and Advanced Administration allow adding any custom URLs by editing the corresponding .jspx files. This gives an option to put custom URLs by using ADF tags in places, such as the header.

The files are:

For unauthenticated Self Service:

iam-consoles-faces.war/pages/USelf.jspx

For authenticated Self Service:

iam-consoles-faces.war/pages/Self.jspx

For Advanced Administration:

iam-consoles-faces.war/pages/Admin.jspx

Note:

The same files can be used to add additional static text at different locations as permitted by the .jspx files. For example, to add a static text in the header region, identify the appropriate adf facet in the file and use standard adf tags to put such information.

25.9 Changing Popup Properties

The popups in unauthenticated Self Service, authenticated Self Service, and Advanced Administration can be modified to change the properties, such as turning resizing on or off. This can be done by modifying the corresponding .jspx file and making changes to the popup definition.

The files are:

For unauthenticated Self Service:

iam-consoles-faces.war/pages/USelf.jspx

For authenticated Self Service:

iam-consoles-faces.war/pages/Self.jspx

For Advanced Administration:

iam-consoles-faces.war/pages/Admin.jspx

For example, the operational popups, which means popups having some operation unlike confirmation or message popups, search for the definition of POPUP_FORM_0. Inside this definition, add resize="on" to the contained <af:dialog /> definition, as shown:

<af:popup id="POPUP_FORM_0" clientComponent="true"                 contentDelivery="lazyUncached">
 <af:dialog binding="#{admin.view.popupForms[0].dialog}"
resize="on"  clientComponent="true" cancelVisible="false"
…

25.10 Customizing the Workflow Designer

There are a number of properties that can be useful in customizing the Workflow Designer user interface based on what a particular locale demands. These properties files are in xlWebApp\WEB-INF\classes\xlRichClient_LOCALE.properties.

This section discusses some of the examples of Workflow Designer customization.

The label widths for the task names can be customized by using:

global.workflowRenderer.labelWidthFactor=7

If in a particular locale the text is seen to be truncated, then this property can be changed accordingly to modify the width of the labels.

Similarly, the width and height of the icons representing the tasks and responses can be controlled by:

workflowRenderer.referenceMarker.defaultHeight=22
workflowRenderer.referenceMarker.defaultWidth=22
workflowRenderer.referenceMarker.defaultDistance=6
workflowRenderer.referenceMarker.maxLabelLength=5

workflowRenderer.response.defaultHeight=20
workflowRenderer.response.defaultWidth=250
workflowRenderer.response.maxLabelLength=25

workflowRenderer.task.defaultHeight=38
workflowRenderer.task.defaultWidth=38
workflowRenderer.task.maxLabelLength=200

In the search functionality at different places in the designer implementation, the number of results could be high in cases where users and groups are searched. To control the number of results to be displayed, the following properties can be used.

workflowDesigner.label.limitUserSearchResults=200
workflowDesigner.label.limitGroupSearchResults=200
workflowDesigner.label.limitAdapterSearchResults=200
workflowDesigner.label.limitEmailTemplateSearchResults=200
workflowDesigner.label.limitRulesSearchResults=200
workflowDesigner.label.limitAssignTypeSearchResults=200
workflowDesigner.label.limitDependentDataTaskSearchResults=200
workflowDesigner.label.limitExistingTasksSearchResults=200

When the number of results returned are more than these numbers, a message is shown to narrow the search criteria.