dm_notes: Documentum Notes

September 5, 2008

UCF Demistified : Client Config : Part 1

Filed under: documentum, ucf — Tags: , , — Rajendra @ 9:19 pm

UCF is the de facto standard for Transferring the Content from Documentum repository to the end client across its application clients (applications that doesn’t have any DFC footprint on the client).
UCF is composed of 2 parts: a Client and a Server.  UCF extensively uses configuration files for various aspects.

UCF configuration files exist at two layers. One on the server – App Server (ucf.server.config.xml file) and the other on the Client (ucf.client.config.xml file).

The rest of the article looks at the configuration files applicable to the client layer.

A configuration file defines how UCF is launched on the client.
On the client, UCF has few configuration files that defines how it is launched.

Each of the below configuration file is used for a definite purpose. The purpose of each file is detailed below:

  • ucf.launcher.config.xml: This is the file that specifies where UCF should look for files (like libraries, configuration files etc.). This file has the configuration parameter that specifies the UCF home directory (“installs.home”). This directory is used by the UCF launcher to look for the files it requires for launching the UCF client process. During UCF installation this is the first files that gets created.
  • ucf.installs.config.xml:
    This is the main configuration file that the UCF launcher uses to launch the UCF Java process (on the client). This file defines the UCF Runtime environment on the client.

    • <ucfInstall> element followed by its attributes define where the UCF libraries can be found and how to use it.
      • appId: defaulted to ‘shared’. This specifies that the UCF application libraries are shared across multiple applications (all UCF based consumers) for the same version of UCF client.
      • version: This defines which version of UCF client library should be used for launching the UCF client process. This is the UCF’s version number your application is bundled with. If you have multiple versions of UCF on you client machine, the version specified here used for launching UCF.
        This version follows a standard as other Documentum applications do :
        Format <major>.<minor>.<maintenance  no>.<build no.> ex.: 5.3.0.417 ==> 5.3 SP4 build.
      • host: The host for which these UCF libraries were installed. If your %USERPROFILE% directory is the same from any host in your corporate network, each host from which you access UCF will have a separate UCF libraries directory. Your host UCF client process would pick up the UCF libraries only from the directory that match with the current host.
      • home: UCF home directory, this is the directory where all the UCF related libraries and configuration files are found. This attribute value is the same as defined in the ucf.launcher.config.xml file.

      This ucfInstall element defines the location of the UCF library files, configuration files and the intermediate temp directory.

    • <java> element (under ucfInstall element) and its enclosed elements define the runtime environment the UCF client process uses. The attributes of this element are detailed below:
      • version: The version of JRE being used by the UCF client. This is the version that is found by UCF installer on your host machine found to be suitable for launching the UCF process.
      • minVersion: The minimum Java version the current UCF build requires to launch the client successfully. If this minimum java version is not met, UCF downloads its private JRE and uses it. if your version is higher than the minVersion, no private JRE is downloaded.
      • exePath: The path to the javaw executable that is used for launching the UCF process.
        Hack: If I want to force the UCF to be launched by a different version of java (like JDK 1.6.0 instead of JDK 1.4.2), I can modify this path to point to my JRE. Beware that EMC doesn’t support these hacks and versions it doesn’t support.
      • classpath: This is the classpath used by the UCF client to launch the UCF process. The only additional libraries available to UCF during the launch are only the bootstrap jars of the JRE.
        If you take close look at this classpath entry, it followes a pre-defined format:

        • <installs.home>/<host>/<appId>/<bin>/<version>/*.jar
          (Pre 5.3 SP3 UCF versions doesn’t have the version directory)
          This is for this reason the ucfInstall element has defined these attributes.
    • <option> elements. These are the VM arguments that are passed to UCF process during the launch time.
      • The default options the installer specifies are:
        • java.library.path : This is the directory where the UCFWin32JNI.dll is found (on Windows). This dll file provides the support to access Windows Registry for tracking the User operations on the client (Checked out documents, Viewed documents, Linked documents also called “InlinedDocuments”, Housekeeping parameters etc. When ever a document is transferred to the client (accessed using UCF), its tracked in the registry.
        • java.util.logging.config.class: This is the standard Java.util.logging parameter (defined by JDK) that defines the Logger class to be used for logging UCF calls. You can plug-in your own logger instead of the default Logger, in case you have additional requirements for logging.
          Note: One pitfall I see in using java.util.logging.Logger is it doesn’t record the granularity of timing at milliseconds unlike Log4J (Bug# 6285131).
          Custom loggers however are not supported by EMC.  (Only for detailing purpose they are hinted here)
        • user.home: The Java’s user.home system variable. This would be the default directory where your documents would be checked out, Viewed or Exported to. The documents location can however be defaulted to a different location by specifying them in the “ucf.client.config.xml” file (more on this later).
        • Any additional VM arguments that needs to be passed can be added to this file here.
          Like minimum/maximum Heap memory; Debugging parameters or JMX listeners etc.

UCF Launcher : UCF Launcher used by WDK applications launch the UCF process in a shared mode. This means the launched UCF client process can be shared across multiple content transfer invocations. Having it shared means the UCF client process lingers around for some period  after the current operation (this is configurable again; details to follow later) waiting for further requests from UCF server.

Note: The above statements detailed in this article are neither supported nor suggested by EMC. Its purely my own understanding of the UCF component. Please use this information at your own discretion.
Neither me nor EMC would provide the support/take the responsibility, if the default installation is altered.

8 Comments »

  1. Thanks for the detailed information. It cleared lots of my doubts.

    A quick question, Does Drag and Drop use UCF? If it is not using UCF how does it transfer content?

    Comment by Mathew — June 18, 2009 @ 2:21 pm

  2. Yes. Any content transfer to/from CS to Client would have to go through UCF (unless you have changed it from ucf to http mode).

    Comment by Rajendra — July 15, 2009 @ 2:28 pm

  3. Thank for your reply.

    WDK 6.5 development guide states that Drag and Drop doesn’t use Content Transfer. Does this mean it doesn’t use HTTP content transfer and not UCF Content Transfer? Does the user have to download 2 applets to use Drag and Drop (Drag and Drop applet and UCF content Transfer applet)? OR Is it a single applet download?

    Comment by Mathew — July 15, 2009 @ 2:48 pm

    • I just noticed in the WDK Guide. Its strange to see such a note, not sure why it is so as UCF is the universal content transfer for all non client server based applications.
      This is then a deviation from the approach

      Comment by Rajendra — July 17, 2009 @ 2:48 am

  4. I opened an SR with EMC for the same and this is what I got from them.

    My Question –

    WDK development Guide mentions that Drag and drop does not use UCF for content transfer. Drag and drop to or from the desktop will not use the closest ACS or BOCS server to the user and will always transfer content to or from the primary Content Server. Is this true?.

    Answer I got from, EMC

    “What they are trying to say is that drag and drop does not use ucf. It uses another emc proprietary format. I believe that there is some confusion potential here because one could assume that they mean that drag and drop does not work if you have ucf configured. That is not the case.”

    I asked them what “emc proprietary format” it uses. I didn’t get an answer yet. :(

    Comment by Mathew — July 17, 2009 @ 2:42 pm

    • What I did expect is WDK uses a ActiveX control to provide the Drag & Drop functionality as it has to work with native windows OS to get some clipboard and drag and drop information. Once it captures all the information, I expected it to give the control back to UCF for actual transfer.

      As it is clear it doesn’t use UCF, I am not sure how it will work for complex document structures like OLE links, XML references etc. the logic should have got duplicated with in EMC’s multiple code base. If it is so we may expect different behaviors using different technologies.

      Comment by Rajendra — July 17, 2009 @ 4:17 pm

  5. Hi Rajendra,
    hope you are doing good.

    we are facing an issue with ucf. Recently some of our application are upgraded to Webtop 6.5 and mandated that they should use jre 1.6 (upgraded jre on all client machines by default as part of latest application release). After accessing content from any Webtop 6.5, again user is not able to perform content operation like checkin, export etc. Do you know how to resolve this kind of issues. I have tried to create a new configuration for Documentum 5.3 modifying cuf.client.config.xml file in Webtop app. During the applet init process, 5.3 UCF applets simply stuck without any progress.
    As you are expert in UCF, could you please tell me a solution.
    Thanks in advance.
    -nag

    Comment by Nag — October 6, 2009 @ 7:36 pm

  6. Well, the article is actually the best topic on the best registry cleaner in 2009. I agree with your conclusions and will eagerly look forward to your forthcoming updates. Just saying thanks will not just be adequate, for the extraordinary lucidity in your writing. I will at once grab your rss feed to stay abreast of any updates.

    Comment by blue screen tv — January 4, 2010 @ 2:52 am


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Theme: Silver is the New Black. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.