There is one feature that I consistently use that isn’t available here: Update Metadata. Oracle has made it easy to add this feature.
The list of options for this menu are stored within one of the many resources included with the Standard Oracle UCM installation. The main include that controls this is called setup_search_results_action_popups. This include contains references to all the functions that can appear on the action bar. Here is an example of how that code reads:
This adds the “Get Native File” link to the popup. There are five key properties to this:<$exec setValue("PopupProps", "label", lc("wwGetNativeFile"))$>
<$exec setValue("PopupProps", "ifClause", "not isExternallyManagedDoc")$>
<$exec setValue("PopupProps", "function",
"<$SearchHttpCgiPath$>?IdcService=GET_FILE&dID=<$url(dID)$>&
dDocName=<$url(dDocName)$>&allowInterrupt=1")$>
<$exec setValue("PopupProps", "class", "document")$>
<$exec setValue("PopupProps", "id", "getNativeFile")$>
Property |
Sample Value |
Description |
|---|---|---|
label |
Lc(“wwGetNativeFile”) |
The label as it will appear in the popup menu |
ifClause |
not isExternallyManagedDoc |
A clause that will be executed as part of an if statement to see if this particular function should appear in the popup menu. In this sample, this function will appear if the following statement executes true: <$ if not isExternallyManagedDoc $> |
function |
<$SearchHttpCgiPath$>? IdcService=GET_FILE& dID=<$url(dID)$>& dDocName=<$url(dDocName)$>& allowInterrupt=1 |
The function that will be executed when clicked. Notice that we can use IDOC script in here as well as references to metadata values gathered in the search results |
class |
document |
Defines the class of Search Results for which this is pertinent. You will most often use “document” here, although you could use “Client Controlled” for some WebDAV/ ODMA integration. |
id |
getNativeFile |
A unique identifier for this function. You may want to consider using a custom prefix (such as “OV_”) for all of yours. |
The key to this resource sits at the end:
<$include extra_setup_search_results_action_popups$>
Jackpot! Oracle has left this hook for use to use to bring extra code into this include. We can now go build a component that adds a new feature in here.
Use the Component Wizard to start a new component by selecting “Add” from the main screen. Select “Create New Component” and give your component a name. It’s best to leave the directory at the default setting of “custom.”
I like to prefix all of my components with OV_ so that I can distinguish them from other components that I obtained from different sources (such as Oracle support).
From here, add a Resource (of the HTML/ String varietal). I usually keep all of the default settings for file names, etc., but you are welcome to customize them as you see fit.

Once this is set, you can add the include to the final screen. You need to at least define the include here before continuing. Some people will go ahead and type the include code into this form, but I prefer to open the file in a proper text editor.
In the text editor, we can now add in our custom function. (You can find the file in your installation directory. The path is [install directory]/custom/[component name]/resources.) We only need a couple of lines of code here, and we can borrow heavily from what Oracle has already provided us.
First and foremost, since we are using a hook that is potentially used by other components, we need to make sure to include the previous versions. We use the super. construction to achieve this:
<$ include super.extra_setup_search_results_action_popups $>
Now we can add in our new function. We only need the five lines outlined above. I just pasted a copy of these lines into my include. I can then modify the values.
<$exec setValue("PopupProps", "label", “Update Metadata”))$>
This example just creates the label without accessing external string variables. For multi-language support, you may want to consider a more robust naming mechanism, but for the purposes of this demo, let’s keep it simple.
<$exec setValue("PopupProps", "ifClause", "not isExternallyManagedDoc")$>
This is the same as above. We don’t want to do this for external documents that find their way into search results.
<$exec setValue("PopupProps", "function",
"<$HttpCgiPath$>?IdcService=GET_UPDATE_FORM&dID=<$url(dID)$>&
dDocName=<$url(dDocName)$>")$>
This is the URL for the Update Metadata page. I can easily find this by using the Top Menus layout and browsing to a page. Notice that I can use IDOC inside the exec function here; this will make the URL unique based on the metadata of each search result.
<$exec setValue("PopupProps", "class", "document")$>
Again, this is the same as above.
<$exec setValue("PopupProps", "id", "OV_UpdateMetadata")$>
I’ve included a prefix in the ID here just to make sure it doesn’t clash with anything else in the system.
Once this is done, you can use Component Wizard to build and enable your component. Restart the server and voila! You’ve now got a brand new button!
I can add a variety of other functions in here; all I need to know is the service name and the required parameters. I can paste these together to form a URL that takes me directly to that function. For example, if I want to add in Dynamic Conversions or even links to external websites (Google searches on a metadata value found in the document, for example), I can use this example to build my own functions onto the user interface.