Options to Customise EBS Look and Feel

Background

When using different Oracle instances, errors can happen when changes are made if you mistakenly think you’re in a test system, but are logged into your production instance. There are a few options you can use to help differentiate between your PROD and other instances, both for your Core Applications forms sessions, and also your HTML based OAF pages.

Forms

Profile: Site Name

Risk can be reduced when using Core Applications Forms sessions, by using the Site Name Profile option. That then appears at the top of your Core Applications Forms:

Profile: Site Name

Profile: Java Color Scheme

You can also use the Java Color Scheme profile to change your forms to a different colour to your PROD instance, which helps differentiate between your instances. In Release 12, there are a number of different options:

Java Color Scheme Value Example
blue Blue
khaki Khaki
olive Olive
purple Purple
red Red
swan Swan
teal Teal
titanium Titanium

HTML / OAF Web Pages

Doing something similar with EBS Web pages isn’t as simple, but there are a still a number of options.

When viewing an HTML page in EBS, there is normally a “branding” image in the top-left of every page – for example:

FNDSSCORP

The standard branding image has a name of FNDSSCORP.gif and resides in the following directory: http(s)://your.ebs.site.com:/OA_MEDIA/FNDSSCORP.gif

Custom Logo Option

Say we have three PROD clones, called UAT1, UAT2, UAT3.

You could in theory create a new GIF image for each of those sites, with the site name written on them. Upload them to the OA_MEDIA directory. Then after a PROD clone on e.g. UAT1, you could update the Corporate Branding Image for Oracle Applications profile, so that it said “UAT1.gif”.

Then when you browse to e.g. iProc, you would see e.g:

Alternative Branding Image

Advantages

  1. System wide setting – works for all users and only requires 1 profile change per clone
  2. Quick and easy to set up

Disadvantages

  1. If you don’t have a solution in place already (e.g. your site’s cloned instances all have the same branding image), you would need to work with the DBAs to get new images in place for your cloned instances.
  2. Access required to upload files to the OA_MEDIA directory.
  3. The <title> HTML Attribute cannot be updated to include the Instance Name – e.g. it’d be useful for HTML Page Titles to start with the Instance Name, to provide additional clarification about the instance being used.
  4. Not all pages are updated via this profile option – pages like Application Diagnostics and Oracle Application Manager / OAM do not use the image defined in the “Corporate Branding Image for Oracle Applications” profile, but instead use the “FNDSSCORP.gif” header image. That cannot be replaced with a profile option, though you could in theory just overwrite it with a custom image.

Firefox and Greasemonkey Option

There is a Firefox Add On called Greasemonkey which allows users to install scripts that make on-the-fly changes to web page content after or before the page is loaded in the browser (also known as augmented browsing).

Greasemonkey scripts are written using Javascript. Each time an EBS page is loaded, Greasemonkey reads the user script, and processes the script to make changes to the way the HTML is rendered on the page.

Advantages

  1. Changes can be made on a per-user basis. User A might want different colours / messages / settings to User B.
  2. No changes are made to your EBS Instance. Changes are made on a per-session basis, local to each user’s browser session. The changes are not invasive.

Disadvantages

  1. Changes have to be made on a per-user basis – they cannot be applied centrally to a number of different computers
  2. The setup can be fiddly.
  3. The changes can only be made for people using the Firefox browser.

Key Step

The key thing that the script does is to look at the HTML title attribute of the header image on your EBS web pages, and it then replaces it with custom text that can include your instance name. You can also set a custom background colour for the text, which helps differentiate between your instances.

The header image and name are taken from your instance’s Corporate Branding Image for Oracle Applications profile value.

A quick way to find the value of the Corporate Branding Image for Oracle Applications profile option is to go to an OAF Web Page and put your mouse over the header image, right-click, and choose “Inspect Element”:

Inspect Element

Something like this will open:

HTML Snippet

If you set a custom image using the Corporate Branding Image for Oracle Applications profile, then the value of the profile will be the same as the value of the title attribute. For example, if you set the profile value to be XX_CUSTOM_LOGO.gif, then the HTML for the header image will be:

<img src="/OA_MEDIA/XX_CUSTOM_LOGO.gif" title="XX_CUSTOM_LOGO.gif" border="0">

Therefore the image title attribute value of “XX_CUSTOM_LOGO.gif” is what you’ll need to look for in your Greasemonkey Script.

However, if you don’t set the profile, and use the standard FNDSSOCORP.gif, the HTML looks like this:

<img src="/OA_MEDIA/FNDSSCORP.gif" title="Oracle" alt="Oracle" border="0">

Therefore the image title attribute value of “Oracle” is what you’ll need to look for in your Greasemonkey Script.

If you have a custom image set on the Corporate Branding Image for Oracle Applications profile, pages on some parts of some responsibilities )e.g. Oracle Application Manager accessed via the System Administrator responsibility) still use the standard FNDSSOCORP.gif logo, and so have the image title attribute set to “Oracle”.

Therefore, if you do use a custom image, your script needs to be able to look for both variations of the image title attribute, covered in the example below.

Detailed Instructions

  • The user needs to have Firefox installed – instructions as of version 58.0.2
  • Hold down CTRL + SHIFT + A to open the “Add-ons Manager” or open a new tab and type <code>about:addons</code> into the address bar and press enter.
  • Choose “Extensions” option on the left hand side
  • Search for “greasemonkey” in the “Aearch all add-ons” search box, and click “Install” against the item in the search results against the Greasemonkey result:
  • Once it has been installed, you’ll see a monkey icon in the toolbar.
  • Left-click it and choose <code>New user script</code>
  • A text editor will open up. Select all of the text in it, and replace with this javascript code:
// ==UserScript==
// @name        Update Oracle Pages to Include Instance Name
// @namespace   Namespace
// @include     http://*your.site.com*
// @grant       none
// ==/UserScript==

// current page
var url_loc = window.location.href;

// Check URL and set the "env_label" to match the instance you're viewing
// Also set start and finish colours for gradient filled background (c1 and c2)
if (url_loc.indexOf("http://your.site.com")  == 0)     {var env_label = "PROD";      var c1 = "#ff0000"; var c2 = "#ff0000";}
if (url_loc.indexOf("http://your.site.com:8000") == 0) {var env_label = "DBA";       var c1 = "#1589ff"; var c2 = "#3bb9ff";}
if (url_loc.indexOf("http://your.site.com:8001") == 0) {var env_label = "DEV";       var c1 = "#7931df"; var c2 = "#dddddc";}
if (url_loc.indexOf("http://your.site.com:8002") == 0) {var env_label = "UAT";       var c1 = "#87f717"; var c2 = "#3bb9ff";}

// Replace header images with env label and set label colour

// here we look for any images which have a title attribute of "FNDSSOCORP.gif" 
//   OR "Oracle", since the Oracle Application Manager pages also use the "FNDSSOCORP.gif" header image, but 
//   set the title attribute to be "Oracle" rather than "FNDSSOCORP.gif"
// 
// The "||" operator = "OR" so this line:
//   imgs[i].title == 'FNDSSOCORP.gif' || imgs[i].title == 'Oracle'
//
// Is saying "If any images title have a title of 'FNDSSOCORP.gif' or 'Oracle'..., then do something

var imgs=document.getElementsByTagName('img');
for(var i=imgs.length-1;i>=0;i--){
    if(imgs[i].title == 'FNDSSOCORP.gif' || imgs[i].title == 'Oracle' || imgs[i].title == 'Discoverer Viewer' || imgs[i].title == 'Discoverer Plus') {
      var h1 = document.createElement('h1');
      h1.innerHTML = env_label;
      imgs[i].parentNode.insertBefore( h1, imgs[i] );
      imgs[i].parentNode.removeChild(imgs[i]);
      h1.style.color = "white";
      h1.style.padding = "2 10 4 8";
      h1.style.backgroundImage = "linear-gradient(to left, "+c1+", "+c2+")";
      h1.style.margin = "0 5 0 5";
      h1.style.fontSize = "30px";
      h1.style.fontFamily = "Arial";
      h1.style.borderRadius = "5px";
      h1.style.textAlign = "center";
      h1.style.textShadow = "1px 1px 1px white, 3px 3px 5px black";
    }
}

/*##############################################################################
   UPDATE PAGE TITLE TO INCLUDE ENV NAME
/*############################################################################*/

var dt = document.title;                                                // get page title
var url = window.location.search;                                       // get page querystring
var current_path = window.location.pathname.split('/').pop();           // get page name
var tid = url.indexOf("temp_id");                                       // viewing output from concurrent request

if (tid > 0 && current_path == "FNDWRR.exe") {                           // if viewing conc job output
    dt = env_label + ": Conc Job"                                       // page title shows you are viewing the output of a concurrent request
} else {
    var dtl = dt.length;                                                // page title length
    if (dtl > 0) { dt = env_label + ": " + dt; }                     // if page title is populated, prefix it with instance name
    if (dtl == 0) { dt = env_label + " ####"; }                         // if page title is blank...
}

// update the page title
document.title = dt;

/*##############################################################################
#     HEADER TEXT STYLING
/*############################################################################*/
var cells = document.getElementsByClassName("x4i")
for (var i = 0; i < cells.length; i++) {
        cells[i].setAttribute('style','font-size:30px; text-shadow: 1px 1px 1px white, 3px 3px 5px black;');
}

To customise the script:

  1. Add or delete any lines to match the number of instances you have at your site.
  2. Replace any dummy URLs mentioned in the text file (e.g. your.site.com) to the URL for your site.
  3. Change the “env_label” variable values to match the internal instance names for your site
  4. Change the “env_color” colours to suit.
  5. If you have a custom image set in the “Corporate Branding Image for Oracle Applications” profile, replace “FNDSSOCORP.gif” with your image name, including the file type at the end.
  6. Leave in the search for the “Oracle” image title attribute, since that replaces the images in some system pages.
  7. Save changes to file and close it down
  8. When you go to any Oracle EBS pages, the instance name will appear in the top-left of the screen, and the page-title will start with the instance name.
  9. The script also increases the size of general text – e.g. “E-Business Suite”, but if not required, it can be removed by deleting the “HEADER TEXT STYLING” section from the script.

End Result

The end result of that is that the R12 homepage will now contain a custom text header wih a gradient background so that you can easily see which environment you’re logged into:

Custom Header

The HTML title attribute has been updated to start with the instance name – so you can easily see which instance you’re logged into – e.g.

Custom Page Title

Another advantage of that is that the instance name appears in the browser history so that you can easily see which instances you have logged into during the day.

Quickly navigate through My Oracle Support using Keyword Bookmarks

Intro

When working with Oracle I often need to look up a Note or Patch in My Oracle Support.

You can use keyword bookmarks in Firefox and Chrome to search for items using the address bar (using a combination of a pre-defined keyword followed by the search term), which saves a lot of time compared to having to open up My Oracle Support, and then clicking into the search form and searching for whatever you need, or clicking into the SR or Patch tabs and running searches from there.

In fact, they’re not always searches – for example, if you know a My Oracle Support Note, you can easily navigate to that Note ID without having to search for it using this method – you just type in the keyword bookmark (e.g. n), followed by the Note ID, press enter, and you’re redirected to the page on My Oracle Support for that Note. There’s no need to search for it in My Oracle Support – you just go direct to the right place, bypassing any searching. The same applies to Bugs, Patches and Service Requests.

Additionally, the URL I use for Service Requests is handy because unlike the link you see in an email notification to say you’ve had an update on the Service Request, this URL takes you to a version of the Service Request page which does not have relative dates. For example, instead of it saying the SR was raised 5+ months ago and was update 2 days ago, it gives you actual dates instead, which I find a lot more useful.

Firefox

1 – Type CTRL + SHIFT + B to open the Bookmark Manager:

Firefox Bookmark Manager

2 – Create a new folder for your keyword bookmarks by right-clicking on the relevant folder you want to put the new folder in, and click “New Folder”:

Firefox Bookmarks - Add New Folder

3 – Give the folder a name

Firefox Bookmarks - Folder Name

4 – Once done, right-click the new folder and click “New Bookmark”

Firefox Bookmarks - Add New Bookmark

5 – Add in a new Bookmark as follows:

Firefox Bookmarks - Add New Bookmark Example

6 – For each of the following:

Name Location Keyword
MOS – Note https://support.oracle.com/rs?type=doc&id=%s n
MOS – SR https://support.oracle.com/epmos/faces/SrDetail?srDetailRelativeDateParam=false&srNumber=%s sr
MOS – Patch https://support.oracle.com/rs?type=patch&id=%s p
MOS – Bug https://support.oracle.com/rs?type=bug&id=%s b
Google – Search https://www.google.co.uk/search?q=%s gs
Google – Image Search https://www.google.co.uk/search?q=%s&tbm=isch gi
Google – Map Search https://www.google.co.uk/maps/place/%s gm

7 – When finished, the bookmarks will be listed as follows:

Firefox Keyword Bookmarks Completed Setup

As you can see from the Google examples above – the same principle can be applied to any URL which includes the key bit of info in the querystring.

8 – Click the “More” down arrow to access the keyword if you want to edit it at a later date:

Firefox Edit Bookmark - More option

The Keyword field is now visible:

Firefox Edit Bookmark - More option visible

Note – sometimes you have to go back and edit the bookmarks because the keywords don’t save the first time around for some reason.

Chrome

1 – Right-click the address bar and click “Edit Search Engines”

Chrome Edit Search Engines

2 – The following opens:

Chrome Search Engines

3 – Click the “Add” button and add in the details – for example:

Chrome Add Keyword Bookmark

4 – Repeat for the following:

Name Location Keyword
MOS – Note https://support.oracle.com/rs?type=doc&id=%s n
MOS – SR https://support.oracle.com/epmos/faces/SrDetail?srDetailRelativeDateParam=false&srNumber=%s sr
MOS – Patch https://support.oracle.com/rs?type=patch&id=%s p
MOS – Bug https://support.oracle.com/rs?type=bug&id=%s b
Google – Search https://www.google.co.uk/search?q=%s gs
Google – Image Search https://www.google.co.uk/search?q=%s&tbm=isch gi
Google – Map Search https://www.google.co.uk/maps/place/%s gm

Using Keyword Bookmarks

1 – When in Firefox or Chrome, press CTRL + L to move into the browser’s address bar.

2 – To search for a My Oracle Support Note, type the keyword (e.g. n) followed by the note ID – e.g.

Using Keyword Bookmark

3 – Press enter to run the search or redirect to the relevant Note ID, Patch, Bug or Service Request.

These are quick to set up, and once you get used to them, they save a lot of time. You can then add in others you find useful for all sorts of other websites.