Wednesday Oct 17, 2012

Questions Anyone?

I've been working with WebCenter Content for almost 9 years now and have a ton of topics rolling around my head that I'm sure would make excellent blog post once I find the time to write them up.

Does anyone have any questions they would like answered? Like why does WCC do ...? How does this feature work? I can't seem to get this working?

Post your question to the comments and if it is something on my list of topics I had planned on creating a blog post about I will move it to the top of the list.

A very useful custom component

Whenever I am debugging a problem in WebCenter Content (WCC) I often find it useful to see the contents of the internal data binder used by WCC when executing a service. I want to know the value of all parameters passed in by the caller, either a user in the web GUI or from an application calling the service via RIDC or web services. I also want to the know the value of binder variables calculated by WCC as it processes a service. What defaults has it applied based on configuration settings or profile rules? What values has it derived based on the user input?

To help with this I created a  component that uses a java filter to dump out the contents of the internal data binder to the WCC trace file. It dumps the binder contents using the toString() method. You can register this filter code using many different filter hooks to see how the binder is updated as WCC processes the service.

By default, it uses the validateStandard filter hook which is useful during a CHECKIN service. It uses the system trace section, so make sure that trace section is enabled before looking for the output from this component.

Here is some sample output

>system/6    10.09 09:57:40.648    IdcServer-1    filter: postParseDataForServiceRequest, binder start --
 system/6    10.09 09:57:40.698    IdcServer-1    *** LocalData ***
 system/6    10.09 09:57:40.698    IdcServer-1    (10 keys + 0 defaults)
 system/6    10.09 09:57:40.698    IdcServer-1    ClientEncoding=UTF-8
 system/6    10.09 09:57:40.698    IdcServer-1    IdcService=CHECKIN_UNIVERSAL
 system/6    10.09 09:57:40.698    IdcServer-1    NoHttpHeaders=0
 system/6    10.09 09:57:40.698    IdcServer-1    UserDateFormat=iso8601
 system/6    10.09 09:57:40.698    IdcServer-1    UserTimeZone=UTC
 system/6    10.09 09:57:40.698    IdcServer-1    dDocTitle=Check in from RIDC using Framework Folder
 system/6    10.09 09:57:40.698    IdcServer-1    dDocType=Document
 system/6    10.09 09:57:40.698    IdcServer-1    dSecurityGroup=Public
 system/6    10.09 09:57:40.698    IdcServer-1    parentFolderPath=/folder1/folder2
 system/6    10.09 09:57:40.698    IdcServer-1    primaryFile=testfile5.bin   
 system/6    10.09 09:57:40.698    IdcServer-1    ***  RESULT SETS  ***
>system/6    10.09 09:57:40.698    IdcServer-1    binder end --------------------------------------------

See the readme included in the component for more details.

You can download the component from here.

Tuesday Oct 16, 2012

Framework Folders and Duplicate File Names

I have been working with Framework folders a little bit in the past few days and found one unexpected behavior that is different from Contribution Folders (Folders_g). If you try and check a file into a Framework Folder that already exists in the folder it will allow it and rename the file for you.

In Folders_g this would have generated an error and prevented you from checking in the file.

A quick check of the Framework Folder configuration settings in the Application Administrator’s Guide for Content Server does not show a configuration parameter to control this. I'm still thinking about this and not sure if I like this new behavior or not. I guess from a user perspective this more closely aligns Framework Folders to how Windows handle duplicate file names, but if you are migrating from Folders_g and expect a duplicate file name to be rejected, this might cause you some problems.

Thursday Oct 11, 2012

One of my most frequently used commands

On a Linux or UNIX server this is one of my most frequently used commands.

find . -name "*.htm" -exec grep -iH "alter session" {} \;

It is an easy way to find a string you know is in a group of files, but don't know or can't remember which file it is in.

For the example above, I knew that WebCenter Content sends a bunch of alter session commands to the database when it opens a new database connection. I wanted to find where these were defined and what all the alter session commands were.

So, I ran these commands:

cd /opt/oracle/middleware/Oracle_ECM1/ucm/idc/resources/core
find . -name "*.htm" -exec grep -iH "alter session" {} \;

And the results were:

./tables/query.htm: ALTER SESSION SET optimizer_mode = ?
./tables/query.htm: ALTER SESSION SET NLS_SORT = ?
./tables/query.htm: ALTER SESSION SET NLS_COMP = ?
./tables/query.htm: ALTER SESSION SET CURSOR_SHARING = ?
./tables/query.htm: ALTER SESSION SET EVENTS '30579 trace name context forever, level 2'
./tables/query.htm: ALTER SESSION SET NLS_DATE_FORMAT = ?
./tables/query.htm: alter session set events '30579 trace name context forever, level 2'

I could then go edit the query.htm file and find the include that contained all the ALTER SESSION commands.

Friday Oct 05, 2012

Solving Inbound Refinery PDF Conversion Issues, Part 1

Working with Inbound Refinery (IBR)  and PDF Conversion can be very frustrating. When everything is working smoothly you kind of forgot it is even there. Documents are cheeked into WebCenter Content (WCC), sent to IBR for conversion, converted to PDF, returned to WCC, and viola your Office documents have a nice PDF rendition available for viewing.

Then a user checks in a bunch of password protected Word files, the conversions fail, your IBR queue starts backing up, users start calling asking why their document have not been released yet, and your spend a frustrating afternoon trying to recover and get things back running properly again.

Password protected documents are one cause of PDF conversion failures, and I will cover those in a future blog post, but there are many other problems that can cause conversions to fail, especially when working with the WinNativeConverter and using the native applications, e.g. Word, to convert a document to PDF. There are other conversion options like PDFExportConverter which uses Oracle OutsideIn to convert documents directly to PDF without the need for the native applications. However, to get the best fidelity to the original document the native applications must be used. Many customers have tried PDFExportConverter, but have stayed with the native applications for conversion since the conversion results from PDFExportConverter were not as good as when the native applications are used.

Of course it is important to mention that most IBR "problems" are not really problems with the IBR itself, but more likely problems with the documents being converted or problems with the third-party applications IBR is using to convert the documents to PDF.

One problem I ran into recently, that at least has a easy solution, are Word documents that display a Show Repairs dialog when the document is opened. If you open the problem document yourself you will see this dialog.

This will cause the conversion to time out. Any time the native application displays a dialog that requires user input the conversion will time out. The solution is to set add a setting for BulletProofOnCorruption to the registry for the user running Word on the IBR server. See this support note from Microsoft for details. The support note says to set the registry key under HKEY_CURRENT_USER, but since we are running IBR as a service the correct location is under HKEY_USERS\.DEFAULT. Also since in our environment we were using Office 2007, the correct registry key to use was:


Once you have done this restart the IBR managed server and resubmit your problem document. It should now be converted successfully.

For more details on IBR see the Oracle® WebCenter Content Administrator's Guide for Conversion.


Kevin Smith is a Technical Director in Oracle Consulting's WebCenter practice. He has been working with content management products since 2004 when he joined Stellent.


« October 2012 »