Menu

Tuesday, August 18, 2015

How To Override Custom Theme In Open UI Without Deleting The User Preferences Files Of All Users

Scenario : 

We have an Open UI Siebel 8.1.1.11 Patchset 9 application. Currently the first phase of the project is live in production.

We had used Override Default Theme (Doc ID 1600754.1) to override the default theme and launch the application in our custom theme.

Users have been using the application with the custom theme since some months now.

For the second wave, the requirement is to have a "new" 2nd custom theme.

1st Custom Theme - Tree layout and Custom1
2nd Custom Theme - Tab layout and Custom2

The challenge we are facing is, we are not able to now get the users launch the application in 'new" 2nd Custom Theme without having the SPFs deleted.

How can we launch the application in the new theme without deleting the SPF of all users? Do we have any work around through Open UI or Configuration?




Possible scripting approach:

A review of the standard Siebel configuration (using the sample database) reveals the following:

In BC 'User Preferences' the Default Theme ("Theme" in the UI) is stored in field 'Behavior/DefaultTheme'. This field has 'Default Theme PickList' as pick list. This one is constraint (via a pick map) by field 'Behavior/DefaultNavCtrl' ("Navigation Control" in the UI). This field has 'Default NavCtrl PickList' as pick list. This one is constraint (via a pick map) by field 'Behavior/DefaultPlatformType'. This one has 'Default Platform Type PickList' as pick list.

The field 'Behavior/DefaultPlatformType' is not displayed in the UI. It is set automatically (to "Desktop", "Tablet" or "Phone") depending on the platform. When this field is set to "Desktop", the values available in the pick list of field 'Default NavCtrl PickList' are "Tab" and "Tree". When field 'Default NavCtrl PickList' is set to "Tab" the values available in the pick list of field 'Behavior/DefaultTheme' are "Gray Tab" and "Tangerine Tab". When this field is set to "Tree" the values available in the pick list of field 'Behavior/DefaultTheme' are "Gray Accordion" and "Tangerine Accordion".
> To force the Siebel Call Center application to start with "Tangerine Tab" as default theme the sample script below has succesfully been tested. This one,placed in the Application_Start event of application 'Siebel Universal Agent', sets the fields 'Behavior/DefaultNavCtrl' and 'Behavior/DefaultTheme' ("Navigation Control" and "Theme" in the UI) to "Tab" and "Tangerine Tab" respectively:

function Application_Start (CommandLine)
{
var oBO = this.GetBusObject("User Preferences");
var oBC = oBO.GetBusComp("User Preferences");
var oPickDNBC;
var oPickDTBC;

with (oBC)
{
SetViewMode(AllView);
ActivateField("Behavior/DefaultNavCtrl");
ActivateField("Behavior/DefaultTheme");
ClearToQuery();
ExecuteQuery(ForwardOnly);
if (FirstRecord())
{
oPickDNBC = GetPicklistBusComp("Behavior/DefaultNavCtrl");
with (oPickDNBC)
{
ClearToQuery();
SetSearchSpec("Value", "Tab");
ExecuteQuery(ForwardOnly);
if (FirstRecord())
{
Pick();
oPickDTBC = oBC.GetPicklistBusComp("Behavior/DefaultTheme");
with (oPickDTBC)
{
ClearToQuery();
//SetSearchSpec("Value", "Gray Tab");
SetSearchSpec("Value", "Tangerine Tab");
ExecuteQuery(ForwardOnly);
if (FirstRecord())
{
Pick();
oBC.WriteRecord();
}

}
}
}
}
}

oPickDTBC = null;
oPickDNBC = null;
oBC = null;
oBO = null;
}

Please note that the above script a sample script only. You can try to implement a similar one in your environment adapted to your specific requirement. Please test it thoroughly before applying it in Production.

How to add a new theme in version 8.1.1.11 Open UI

Here are the suggested steps to add a new theme in Siebel client running in Open UI mode.



1. Create the custom css file and place it in \public\enu\files.

For example - "theme-blue-tab.css" with the following contents:
#s_sctrl #s_sctrl_tabScreen.ui-tabs ul.ui-tabs-nav li a {
color: white;
font-size: 14px;
font-weight: normal;
height: 24px;
font-style: italic;
background: #99CCFF;
background: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJod…EiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+);
background: -moz-linear-gradient(top,#99CCFF 0,#dfdfdf 100%);
background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#99CCFF),color-stop(100%,#dfdfdf));
background: -webkit-linear-gradient(top,steelblue 0,steelblue 100%);
background: -o-linear-gradient(top,#99CCFF 0,#dfdfdf 100%);
background: -ms-linear-gradient(top,#99CCFF 0,#dfdfdf 100%);
background: linear-gradient(to bottom,#99CCFF 0,#dfdfdf 100%);
}

2. Add an entry in “theme.js” file in \public\enu\\scripts\siebel\custom.

SiebelApp.ThemeManager.addTheme(
              "BLUE_TAB", {
              css : {
                              sb_theme : "files/theme-base.css",
                              sc_theme : "files/theme-gray.css",
                              sn_theme : "files/theme-nav-tab.css",
                              sca_theme : "files/theme-calendar.css",
                             blue_theme : "files/theme-blue-tab.css",
                              sd_theme : IE8inc
              },
              objList : []
});

3. Add the a new LOV record in Administration – Data > List of Values.
Type: OUI_THEME_SELECTION
Display Value: Blue Tab
Language Independent Code: BLUE_TAB
Parent LIC: NAVIGATION_TAB
Order: 3

4. Clear LOV Cache.
5. Go to Tools > User Preferences > Behavior and set the following:
Navigation Control: Tab
Theme: Blue Tab

6. Go to Administration - Application > Manifest Files and add a new entry with the following value:
Name: siebel/custom/theme.js
7. Go to Administration Application > Manifest Administration and add the following :
In UI Objects:
Type: Application
Usage Type: Common
Name: PLATFORM DEPENDENT

In Object Expression:
Expression: Desktop
Level : 1

In Files:
Name: siebel/custom/theme.js

8. For Siebel web client, restart the web server.
9. Clear browser cache.

10. Restart Siebel application. The tab colours should be showing in blue colour. 

How to Set up EBCs to work with LDAP or ADSI Authentication

A couple of key points here:



1. This assumes that all users connect to the external datasource using the same userid / password. If they connect using their own specific credentials it is still possible to make this work but requires a lot more work and setup at the LDAP directory server side.

2. Please make sure that the LDAP attribute you specify for the CredentialsAttributeType parameter in the LDAPSecAdpt is a multi-valued attribute. This process will not work with a single valued attribute. This is specified in the document 

http://docs.oracle.com/cd/E14004_01/books/EAI2/EAI2_ExtBusComps8.html#wp199278.

3. It is important that you make sure that you include the following entries for this attribute in the record for the SharedCredentialsDN.

type=ServerDataSrc username=USER password=PASS
type=GatewayDataSrc username=USER password=PASS
type=EBCDataSrc username=USER password=PASS

Replace EBCDataSrc, USER, and PASS with the appropriate values for your implementation. Also please note that type, username, and password are all in lowercase AND that there is no space before or after the equal signs.