Archive for April, 2009
Adding Fields to Quick Search
The Quick Search box in Oracle Fusion ECM (Stellent) will search Content ID, Title and the full text of content by default. To change the fields this functionality uses you will need to add two configuration variables: QuickSearchFields & QuickSearchOperators.
For example, say you wanted to make the quick search use the default fields AND the comments field. Through the Admin Server then General Configuration add the following (then restart and try it out):
QuickSearchFields=dDocName|dDocTitle|dDocFullText|xComments
QuickSearchOperators=hasAsSubstring,hasAsSubstring,fullText,hasAsSubstring
Possible values for Quick Search Operators:
equals
hasAsSubstring
beginsWith
endsWith
hasAsWord
fullText
dateGreater
dateGE
dateEquals
dateLE
dateLess
numberGreater
numberGE
numberEquals
numberLE
numberLess
zoneHasAsWord
zoneHasAsWordPrefix
Lost Sysadmin Password for Oracle Fusion ECM (Stellent)?
Did you forget your sysadmin password for your Oracle Fusion ECM (Stellent) Content Server?!
There are those rare occasions where you might not know the sysadmin password for your Content Server. The reasons for this are many and varied and certainly not limited to forgetting the password or the departure of your administrator who was the "keeper of the key".
What can you do now?
- Stop all Content Server services/processes including main, admin and inbound refinery services/processes
- Stop the Web Server (Apache, IIS, etc.)
- Find this file: -content server install directory-/data/users/SecurityInfo.hda
- Rename that file to something else so you can keep it, like SecurityInfo.hda.bak
- Open your Content Server database (perhaps with SQL Management Studio for SQL Server or SQL Developer for Oracle)
- Find the record in the Users table where dName equals sysadmin
- Remove the value for dPasswordEncoding for that record
- For that same record set the value for the dPassword column to a temporary password
- Commit your database changes
- Start the Content Server services
- Start the User Admin standalone application, not from the admin applets page
- Use your new password to login when prompted
- Find the sysadmin user and update the password to your new long term password
- Close the User Admin application
- Start the Content Server Web Server
- Enjoy!
Calling A Stored Procedure From Oracle Fusion ECM (Stellent)
You want to call a stored procedure from within your Oracle Fusion ECM Content Server (Stellent). This post will detail two ways to accomplish that. This post will also be written under the assumption that the stored procedure you are attempting to call resides in your Content Server database.
The first step is to define a query resource. This is fairly simple through Component Wizard. When you create the actual query give it a name and put the word "exec", a space, and the name of your stored procedure in the Query text area.

A template is needed display our data. The template will be attached to a service we will craft in just a few moments. With your handy component wizard create a new template. Add to it some iDocScript that looks like this:
dDocName (# of Revisions)
<$loop MOST_REVISED$>
<$dDocName$> (<$REVCOUNT$>)
<$endloop$>
Now for a service with which to execute our query. Through component wizard go ahead and create the service and then add an action. The action is where we will execute our query resource which points to our stored procedure. Note the parameters textbox as we name the Result Set that will hold our data returned from the stored procedure. Do not forget to hook up your template you made earlier.

We have now used the triangle of power to produce results: Service, Query, Template. To call your query resource from Java you can use the createResultSet method of the Workspace object. You will need to copy the data from that ResultSet into a DataResultSet object and put that in the binder for your template to have access to it.
ResultSet rs = m_workspace.createResultSet("QmostRevisedContent", m_binder);
DataResultSet drs = new DataResultSet();
drs.copy(rs);
m_binder.addResultSet("MOST_REVISED", drs);
Here is a Sample Component to Call A Stored Procedure which demonstrates this functionality. It was developed against SQL Server, not Oracle, but the same concepts apply. The component includes a sample sql script you can run against your database to create a stored procedure for the component to execute.
Beware the Best Practice
I typically have a hard time in meetings and conference calls when the term Best Practice springs to life. What is a Best Practice? Perhaps I should ask what it means in the context of this post. You can read all about what Best Practice might mean here. 50% of the time I view this as one of the eighty thousand buzzwords that get tossed around during requirements gathering or the whole RFP, RFI, RF* process.
Problems with best practices:
- There may be NO Best practice for your particular issue
- Using a Best Practice can easily fail because you used it instead of investigating the root problem
Having problems figuring something out? Arguing over the best course of action? Ask the consultant what the Best Practice is. This is a great tactic. We grant our consultants a chance to prove themselves, absolve our self of responsibility, appear to be acting in the best interest of the project and get to check off another buzzword. All with a single question. I find this course can elude talking about the real issues. We fail to decide on a real solution for a tough business problem we are facing.
Sure, there really is such a thing as a good course of action or a Best Practice for various issues. News Flash: Not every problem HAS a Best Practice. In fact, a fairly large number of the problems we are trying to solve are likely not going to be solvable by a Best Practice. If there was a specific, well known, highly adopted and strongly verified process to solve the issue we are dealing with it would likely mean our company is not doing anything unique or special. That would be bad because then we would have no competitive edge now would we?
Having established that a Best Practice cannot solve at least a portion of our roadblocks, and having noted we should not avoid tough, lengthy discussions we need to be aware of one more danger. Occasionally there IS a Best Practice that fits fairly well with the problem on the table. Please do not just follow the process blindly. Think for yourself. Sometimes you can just tell that there is a fundamental flaw in the process for your special scenario.
Finally, an example. I tell you, when I was a small child my parents would get upset if I would yell across the house at them. It was quickly set forth as a rule that you went and found them and talked to them normally instead of yelling at them. I offer this as a Best Practice. Now I offer an example where following the Best Practice was not the Best Solution:
