Filenet- An Introduction

July 19, 2011 Comments off

Filenet helps organizations make better decisions faster by managing the content and processes that drive their business.

 There are 2 solutions of Filenet:

i)             Enterprise Content Management(ECM)

ii)            Business Process Management(BPM)

Enterprise Content Management(ECM)

  • ECM is employed for managing the capture, storage, security, revision control, retrieval, distribution, preservation and destruction of documents and content.
  • ECM concerns content imported into or generated within an organization to the course of its operation, and includes the control of access to this content from outside of the organization’s processes.
  • ECM meets the challenges of the organizations need to leverage technology to meet business continuity and corporate governance requirements for making business content traceable, secure and auditable.

Business Process Management(BPM)

  • BPM increases process performance, reduces cycle times and improves productivity by automating, streamlining, and optimizing complex processes to manage the flow of work throughout the enterprise.
  • BPM helps shorten processes lifecycles and automatically manages process exceptions so one can react immediately to internal events or customer demands.
  • BPM monitors and tracks business processes so analysts and managers can see how their operations are performing. This, in turn, helps one to simulate and optimize key processes  and the value of internal resources.
  • Filenet System Monitor is the proven solution for lowering the cost of managing FileNet systems and increasing system uptime.
  • It proactively monitors the health of FileNet systems alerting operators when a critical error occurs.
  • In addition to proactive monitoring of FileNet parameters, it provides an intelligent logfile management for FileNet logfiles as well as 3rd party logfiles. These can be analyzed automatically for critical information, including filtering and duplicate detection as well as escalation and de-escalation of severities. Administrators no longer have to parse logfiles manually in order to check the health status of the application or system.
  • Tasks include configuration of the monitoring the FileNet systems as well as statistical analysis of health and performance.

Presets in Documentum 6.5

June 9, 2011 1 comment

WDK (web development kit) customizations have been part and parcel of all custom Documentum WebTop applications. The customizations includes copying the WDK components (XMLs, JSPs, custom class etc) into the custom layer. Until version 5.3 SP6 there were no Documentum out of the box features that allowed developers to perform basic customization without having to customize the WDK components manually.

Documentum 6 and above version presented the idea of “Presets”. This versatile out of the box feature in Documentum enable Documentum developers to perform basic WDK customization/configuration with a few clicks of the mouse.

This Post  deals with the basics of Documentum presets and demonstrates a sample preset configuration.


Presets are out of the box feature in Documentum which enable Documentum developers to perform basic WDK customization/configuration with a few clicks of the mouse.Presets are easy to apply rules or configurations that can be created to bring in WDK configurations and setting without having to configure JSP’s pr XML’s manually. Though presets cannot completely replace WDK customizations, they certainly save time when used to make simple and common WDK changes in Documentum WebTop application.

Below an attempt is made to explain the various options available for presets and the way to configure them. Though all the options are being touched upon, for simplicity I am picking up an example preset which I will be using to disable the “FileàNewàDocument” option for all users except administrators.

 1. Presets option is available in Documentum WebTop once you have logged in as Documentum administrator. It can be seen in the left browser tree under Administration–>Presets

  1. When clicked on “Presets” the right panel will display the list of Presets if any exists.
  2. Use the menu bar option File–>New–>Preset to configure a new Preset

3. This will pull up a screen with the “Setup” tab pre selected. This screen offers the user with four options as shown below.

4. The four options are as follows

  1. Apply to User/Group/Role: This option enables us to configure a preset for a specific user/group or role. For example to configure a preset which would disable “Fileà NewàDocument” option for all users except the members of “admingroup” group, this would be the option to be selected.
  2. Apply to existing location: This option enables us to configure a preset for a specific location. For example if anyone wants to configure a preset that would enable /disable navigations or menu bar options for a particular folder or cabinet this would be the option to be selected.
  3. Apply to specific type: This option enables us to configure a preset for a specific object type. For example if anyone wants to configure a preset for dm_document( or any custom ) object type alone then this would be the best option.
  4. Apply to specific repository: This option enables us to configure a preset at the repository level. For example if anyone wants to configure a preset which would display only custom object types while creating a new document in WebTop for all users who are logged into a repository (docbase) then this would be the option they have to look into.

5. To continue with the steps, here we would be continuing by using option a mentioned above. Using this we would try to create a preset such that “FileàNewàDocument” option is disabled for all users who are members of “admingroup” group.

6. In the screen shown in step 4 click on “Select…” button for Apply to User/Group/Role: option. A screen as shown below will be pulled up to select the required group. In this example we will be selecting “admingroup”.Filter the required group and select it. Click OK

7. Once the group is selected, the next step would be to move to the “Rules” tab. Provide the “Preset name” and “Description” textbox and then click on Next button to move to “Rules” tab.

8. The “Rules” tab will present us with a screen which allows us to configure various entities with respect to the group we selected.

 Note : In this case these entities can be applied for group. As mentioned before (step 5) the same set of entities can be applied for other options,  that is the rules can be applied for type, docbase or location as well.

9. The above screen displays the following rules. For each rules there are configurations/actions that can be selected. Most of the options are self explanatory.

a. Permissions

b. Formats

c. Types

d. Groups

e. Workflows

f. Lifecycles

g. Templates

h. Actions

i. Navigation

j. Attributes

10 .Here since we are going to disable the menu item “File–>New–>Document” we will be selecting the option “Actions

11. When the option action is selected, an “Action Selector” drop down is presented to the user. We have the option to select a particular action and then add them to the “Excluded” list. Here we will be selecting the action “File–>New–>Document”.

12. Click “Finish” .The new preset is created and this will be visible in the Presets list. Refer image below.

13. The comparison between the screen shots taken for “File–>New–>Document” action before and after the preset is created.

Note: As mentioned in the steps above various kinds of Presets can be created. While planning to create presets, one thing to be borne in mind is that if a preset is applied to a group, location, docbase or type, it is not possible to create another preset for the same group, location, docbase or type.

More Details and Limitations of presets

Please refer Documentum WebTop release notes for more details and to know about limitations of presets.

  1. Presets are created as dmc_preset_package objects in Documentum
  2. WebTop presets reside in Documentum under the location given below    “Cabinets/Resources/Registry/Presets/Webtop/Preset Packages”
  3. A preset can be queried using the DQL select * from dmc_preset_package where object_name like ‘%<name of preset>%’

Any Points missed please mention it in the comments , will refresh the Post.

Configuring Documentum WebPublisher

June 7, 2011 Comments off

There has been a lot of Emails floating to me these days regarding  Documentum WebPublisher Configuration and Setup. I myself being newbie to WebPublisher could not reply back , so thought of coming back with a research and small Proof-Of-Concept at my end.

Before we start discussing about Documentum WebPublisher (WP) Configuration , here are few of the Pre-Requisites we need to take care:

The following Software / Components have to be installed before the actual services are installed:

  • Application server (e.g. Tomcat server) into Target Web Server
  • Database Server (e.g. MS SQL server)
  • Documentum Content Server
  • Web Publisher Server Files on Content Server
  • Web Publisher on target Web Server
  • Site Caching Service (SCS) Source on Content server
  • Site Caching Service (SCS) Target on target Web server

Documentum WP helps in Publishing the content from Documentum repositories.

Steps to create  &  publish the content:

 1.Create a workflow template using workflow manager.  User can either use the desktop version of workflow manager or web version that can be accessed from Web Publisher.

 To start creation of a workflow template using desktop version of workflow manager

 a) Open Workflow Manager.

b) Log in to Workflow Manager as Web Publisher administrator. A Web Publisher administrator should have super user permissions.

c) Choose File->Open. Browse to System->Applications->Web Publisher folder and select a Web Publisher default workflow. For example, Submit to Web site. This opens a default Web Publisher workflow on which to base custom workflow.

d) Choose File->Save As and save the workflow with a name that represents the workflow. All workflows must be saved in System->Applications->WebPublisher-><user_defined_workflow_folder>. Create a new folder or save workflows to the Web Publisher root folder.

e) Validate the template.

f) Install the new workflow template

g) Make it available through Web Publisher.

To access workflow manager from Web Publisher, log in to Web Publisher as a Web Publisher administrator.

Goto Administration – > Web Publisher Admin->Workflow templates and repeat the steps from c to g.

2.    Create a new category under Templates in Web Publisher. Goto Site Manager -> Templates and create.

3.    Import a template to the new category that is created. Template provides layout for content.

4.     Assign default life cycle and the newly created workflow to the template.

5.    Make the template available for use.

6.    Create a web cabinet in Web Publisher.

7.    Create a folder in web cabinet.

8.    Create content using the newly created template in Web Publisher.

9.    Create a site publishing configuration in documentum administrator

             i.        Start Documentum Administrator and connect to the docbase as a superuser.

            ii.         Click Site Publishing.

           iii.        Create a new site-publishing configuration.

      iv.        Set values in the site-publishing configuration:

a.    Click Active. In the Version field, type Active.

b.    Click Publishing Folder and browse the Docbase to the website folder (web cabinet).

c.    Type the target host name. This is the host where the SCS target software is installed.

d.    Type the target port for making connections to the target host. The port entered must match the port specified at the time of installation of SCS (DefaultPort , 2789)

e.    Type the target root directory to which user wants to publish the content. To publish web pages to Apache Tomcat, give this as target directory:

C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\ROOT

f.     Choose the connection type.

g.    Click the Advanced tab. Select a new export directory or leave the default unchanged.

h.    Type the transfer user name, password, and domain. Enter the transfer authentication domain name that was provided during SCS target installation. Enter a valid username and password. Click Ok.

10. If the content that is created is not in a web-safe format, then convert it into web-ready format. This is done

a.    Login to WP as administrator and go to the Administration -> Web Publisher Admin -> Settings -> File Formats and define the file formats as “Web formats”, they will then be recognized as Web-safe formats.

b.    Set  a_special_app field of that content equal to “2” by update statement in DQL.

DQL query—

Update dm_document OBJECT SET a_special_app=’2’ where r_object_id=’<object id of the content which you want to publish>’

11. Log in to Web Publisher as Administrator.

12. Start the new workflow using Web Publisher.

13. Navigate to the content created.

14. Select the checkbox

15. Go to Tools

16. Select Workflow -> Start  

17. Assign a content author and web admin as administrator.

18.  Workflow tasks will appear in user’s inbox.

19. User can accept and forward the task to next user or reject it.

20. In Documentum Administrator, browse to the respective site configuration created. Select it and can then goto  tools tab ->Publish. Content is automatically published once it is approved.

Could not compress the article further , appreciate your patience, Hope the Post is useful and clarifies all the doubts as to How to Configure WP.

Awaiting Comments.

Installing Documentum TBO using Composer

May 12, 2011 3 comments


The Business Object Framework (BOF) is a set of functionality that provides ability to hook into any of the methods in the standard DFC object interfaces.

BOF’s are of two kinds:

  1. Type Based Object(TBO)
  2. Service Based Object(SBO)

TBO’s are used when only one object type needs its functionality overridden whereas, we use a SBO when the functionality is overridden for different object types or in case we want to use the functionality in many other TBO’s.

The main use of TBO is the ability it gives a developer to override selected functionality of the DfSysObject or any of its child types.

Module 1: Creating the TBO

Steps to be followed for creating a TBO jar

  1. Create a java class using the same name as the object type.
  2. The java class will have to extend DfDocument and will have to override its 4 functions getVersion, getVendorString (), isCompatible (String s) and supportsFeature (String s)
  3. Then it will have to override the function that the tbo is needed for example doSave () etc.
  4. Compile this class and make a jar of it.

Module 2: Installing the TBO

Steps for installing the TBO in the docbase

  1. Create a new Documentum project in Composer
  2. Right Click on Artifacts and select New>>Other. In the New screen select Documentum Artifact>> Jar


Click on Next, and in the Artifact name field enter the name of the object type and click finish

 3. Now for configuring the new jardef that we created. Since we have created only an implementation of the TBO, select Type field as Implementation. And  in the jar content browse and choose your jar file that was created in the Module 1.

4. Right Click on Artifacts and select New>>Other. In the New screen select Documentum Artifact>> Module

Click on Next, and in the Artifact name field enter the name of the object type and click finish

5. Now for configuring the new module that we created. In the Info tab select TBO from the drop down menu for Type.

6. In the Core JARs tab select Add for Implementation JARs and select the jardef created in previous step. Now click on Select in front of class Name this will display the class details of the jar in the jardef select the appropriate class.

7. Right click on Project and select the “Install Documentum Project” menu item.

Enter the username and password and click on Login button. The user will be authenticated and the Next and Finish buttons will become active. Click Finish to install the TBO into the docbase. This may take some time.

 Now whenever an object of the type for which the TBO was created is invoked or created the TBO will be fired. The TBO can be found at Cabinets>>System>>Modules>>TBO

 Module 3: Re-Installing the TBO

In case the java class has been modified, then the TBO needs to be re-installed. The steps to re-install TBO are as follows

  1. Delete the folder with the TBO name in the location (Cabinets/System/Modules/TBO)
  2. Recreate the jar using the new java file.
  3. In Composer remove the jar file from the jardef and add the new jar file
  4. Reinstall the Project to the docbase.

Uploading Document In Documentum Through Java

April 13, 2011 1 comment

Document management is a requirement in many applications and documentum is a widely used document management system. Document management starts with document upload. Once a document is uploaded it can be associated with workflow and lifecycle. In addition to this, different versions of the document can be created and maintained. This document focuses on saving documents with metadata in the documentum using java and JSF.

An object or document in documentum can be considered to be a combination of metadata and physical file. A content model that defines the attributes of the document can be created in the documentum. This can be used to refer to the attributes that are associated with the document.


A Documentum object has to be created before storing data in the Documentum.

Following are the steps to do the same.

1. Get the session for the user who is creating the object

Sample code to get the session object

// Getting the clientIDfClient client =DfClient.getLocalClient();

// Preparing IDfLogininfo object with the user credentialsIDfLoginInfo loginInfo = new DfLoginInfo();

// Set the UserloginInfo.setUser(“<userid>”);

// Set the passwordloginInfo.setPassword(“<password>”);

// Get the session managersessionManager= client.newSessionManager();

// set the user identity for the session managersessionManager.setIdentity(“”,loginInfo);

// Get the IDfSessionIDfSession session = sessionManager.getSession(“”)
2. Create a documentum object Before uploading a document, a place holder for the document, with an identifier has to be created in the documentum.

Given below is the sample code for doing the same.

IDfDocument documentObj = (IDfDocument)session.newObject(“name_of_the_contentmodel”);


where,“name_of_the_contentmodel” , is the type of the object to be created.

“crtext” is the documentum format for a text file.

Setting the content type for the file to be uploaded is mandatory.

On creating a new object, a unique identifier, say objectId is generated.

It can be obtained using “documentObj.getObjectId()”.

Once the object is created, it can be accessed using methods of the Interface,

IDfSysObject.IDfSysObject sysObject = (IDfSysObject)session.getObject(new DfId(documentObj.getObjectId());

where, documentObj.getObjectId() is the documentum object.

Saving Metadata

Document attributes obtained from UI or otherwise can be set and then saved in the documentum using the object reference, sysObject as shown below.

sysObject.setString(identifier for the attribute in the documentum , value for the attribute).

sysObject.setInt(identifier for the attribute in the documentum, value for the attribute)

sysObject.setTime(identifier for the attribute in the documentum, new DfTime(date))

Attaching repeating values(List of objects) , to a property of the documetum object

for (Object value : repeatingValues){

document.appendValue(identifier for the attribute in the documentum,new DfValue(value,sysObject.getAttrDataType(identifier for the attribute in the documentum)));


}, saves the attributes in the documentum.

Uploading file:


In JSF, hx:fileUpload can be used to browse and select a file. This tag accepts data in the form of an array of bytes.

Code in the .jsp file

<hx:fileupload id=”fileupload1″ value=”#{managedBeanName.fileData}” >

<hx:fileProp name=”fileName” value=”#{ managedBeanName.uploadFileName}”/>

<hx:fileProp name=”contentType” value=”#{ managedBeanName.format}”/>


private byte[] fileData = null;—-property in the managed bean to store the content of the file.

private String uploadFileName = null;—-property in the managed bean that stores the file name.

private String format = null;—-property in the managed bean that stores the file format.

Sample java code for saving the file content in the Documentum

FileOutputStream fileOutputStream = null;

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();


IDfSysObject sysObject= (IDfSysObject)session.getObject(new DfId(documentObj.getObjectId());





where, sysObject is the reference to the Documentum object , that will hold the uploaded data and “format” is the format of the file to be uploaded .

Setting contentType is mandatory and the format of the file has to be mapped to Documentum format using resource bundle. The uploaded file, with its attributes can be viewed through the Documentum administrator.

Documentum UCF & Troubleshooting

March 15, 2011 Comments off

UCF stand for ‘Unified Content Facilities’ which is a lightweight applet that is responsible for transferring content between the content server, application server and the client machine during operations such as check-in, checkout, import etc. UCF is a Java-based client application that is installed at run-time.

Since WDK application uses UCF content transfer it downloads a lightweight applet to the browser when the client uses the Documentum operations for the first time.
UCF has many advantages that extend beyond simple FTP (file transfer protocol), such as:

– Recoverability in case of brief network interruption.

– It supports transfer of large files over network and optimizes the transfers by content compression capabilities.

– Awareness of locally downloaded files, and the ability to avoid downloading the same content twice

– Support for complex documents, such as XML files

– Registry support, to allow checkout from one application and check in from another. The diagram below in high level describes the process for a simple ucf operation.

When an UCF operation is requested, a Java applet is downloaded. The UCF client is invoked which requests for a UCF Session ID (UID) from the corresponding UCF servlet process. The UID sent via the browser as a request for content back to the application server. The content is then transferred between the UCF servlet and the UCF client as a direct HTTP
connection. On completion of the process the UCF servlet send the response to the application that it is completed and the browser receives a signal to terminate the UCF client.

UCF performs the following functions:

1. Standardizes content handling across infrastructure and applications

2. Simplifies XML and compound document processing in a Web environment by decoupling DFC and WDK and by providing an open framework for content analysis.

3.Improves maintainability, reliability and performance of WDK content transfer.


Whenever a user gets an UCF related errors, the following are the approaches which should be checked before going into troubleshooting of the issue. This will confirm that the error is not user or machine specific.

1. Closing all browsers and try invoking the UCF operation again.
2. Try login on other user’s machine with your login details to test. Also try doing a test with admin and non-admin privileged users.
3. Try connecting to another UCF client for e.g. DA.

If the error still persists in all the above scenarios, the best option is to reinstall UCF on your client as explained in the section below.


Particularly for developers using multiple applications and making configuration changes it’s sometimes worth re-installing UCF client on your machine.  The steps described below will normally require admin access depending on original UCF configuration.

1. Shutdown down all Browser sessions

2. Delete the ucf folder on your client located here(if this does not work you may need to reboot machine and try)

3. C:\Documents and Settings\<USER>\Documentum\ucf

4. Clear your browser cache

5. Close down any Java Consoles Running and any javaw.exe processes running

6. Clear your Browser Java Plug-in Cache

MS JVM – Delete all files in Temporary Internet Files

Sun JVM – From the Java Control Panel è  General Tab-> Temporary Internet Files -> Delete Files

7. Restart your UCF Test (e.g. Perform the import operation which invokes UCF operation)

8. Check the following folder is created (this confirms the plug-in has downloaded UCF)

C:\Documents and Settings\<user>\Documentum\ ucf\config

9. Check the ucf.installs.config.xml contains the correct paths to valid JRE’s on your desktop.  A common problem is it may point to a JRE that isn’t on your machine (typically due to a corrupt registry on workstation).

10. You must ensure in the file below that the appropriate paths and Java versions are all valid.

<xml version=”1.0″ encoding=”UTF-8″?>

<? dctm fileVersion=”″ compatibilityVersion=”″?>
<ucfInstall appId=”shared” version=”″ host=”WLDN0179847″ home=”C:\Documents and Settings\<user>\Documentum\ucf”><java version=”1.4.2″ minVersion=”1.4.2″ exePath=”C:\Program Files\Java\j2re1.4.2_11\bin\javaw.exe” classpath=”C:\Documents and Settings\<user> \Documentum\ucf\WLDN0XXXXX\shared\bin\ucf-client-api.jar;C:\Documents and Settings\<user>\Documentum\ucf\WLDN0XXXX\shared\bin\ucf-client-impl.jar”>
<option value=”-Djava.library.path=C:\Documents and Settings\<USER>\Documentum\ucf\XXXXXX\shared\bin”/>
<option value=”-Djava.util.logging.config.class=com.documentum.ucf.client.logging.impl.ConfigureLogger”/>
<option value=”-Duser.home=C:\Documents and Settings\<USER>”/>

11. You can also check that the correct versions of the UCF runtimes have been downloaded from the application server.
C:\Documents and Settings \<user> \Documentum \ucf \<computer_name> \shared \bin

You can check the versions of the dll by viewing properties. The version should match the version of UCF you are using and what has been installed on the application server for example for WDK 5.3sp2.


With UCF there are two types of logging available for diagnostics. There are client side (browser) and server side (application server) logging available.Client Side Logging:To enable client side logging, 2 files will need to be modified. Both of these files can be found in the folder:C:\Documents and Settings\<USERNAME>\Documentum\ucf\<HOSTNAME>\shared\config\Where,USERNAME is the windows user IDHOSTNAME is the machine hostname where the testing is being done.The first file to be edited is ucf.client.config.xml. The following entry should be changed to true:
<option name=”tracing.enabled”>
The following entry will need to be added as well:
<option name=”debug.mode”>
The next file to be edited is and set the .level entries to ALL (all caps). The debugging levels available are (from least informative to most):
  • SEVERE (highest value)
  • INFO
  • FINE
  • ALL
Once these changes are made, UCF will begin logging on the client side starting with the next invocation. All output will be logged to: C:\Documentum\logs\ucf.client.*.log.App Server Logging:To enable UCF tracing, the following file in the WDK application will need to be edited:  ../WEB-INF/classes/ucf.server.config.xmlIn this file, the following entry will need to be set to true:
<option name=”tracing.enabled”>
UCF will log on the app server to $DOCUMENTUM_SHARED/logs/trace.log and/or wdk.log (depending on how log4j is configured). These changes will require a restart of the app server.

Don’t Let Your Object Hierarchy Get Too Deep

January 31, 2011 2 comments

For performance reasons, it is best to keep your object hierarchy as shallow as possible. The reason for this is that each level of the object hierarchy is stored in a separate table in the database. In order to manipulate an object, the Documentum server must join that object type’s tables with the tables of all of the other object types in the hierarchy above it. The more levels in your hirearchy, the more tables that must be joined together. And database joins are very expensive.

For example the following object hierarchy must do 4 joins (one for each level) when you query on plant_maintenance_report.


It is advisable to try to collapse this hierarchy. The typical way to do this is to add all the custom attributes to the report object and add an extra attribute that identifies the type of report. You can still query for plant maintenance reports by using a where clause like this: where report_type = 'Plant Maintenance Report'. The resulting type hierarchy will look like this.

%d bloggers like this: