Thursday, November 20, 2008

UCF runtime problem with failed to connect to server error

Symptoms

UCF component unable to upload any files to Documentum. Enabling UCF trace shows no UCF server log.



An error has occurred when invoking the UCF runtime. Details:
Failed to connect to server - refer ucf client logs for details
An error has occurred when invoking the UCF runtime. Details:
Failed to connect to server - refer ucf client logs for details

After closing this window, press the Refresh or Reload button on your browser to continue.

Hide Details

Stack Trace:

An error has occurred when invoking the UCF runtime. Details:
Failed to connect to server - refer ucf client logs for details
com.documentum.ucf.client.install.launcher.InvocationException: An error has occurred when invoking the UCF runtime. Details:
Failed to connect to server - refer ucf client logs for details
at com.documentum.ucf.client.install.launcher.impl.RuntimeInvoker.retrieveContent(RuntimeInvoker.java:433)
at com.documentum.ucf.client.install.launcher.impl.RuntimeInvoker.initConnectionForSharedProcess(RuntimeInvoker.java:287)
at com.documentum.ucf.client.install.launcher.impl.RuntimeInvoker.initConnection(RuntimeInvoker.java:59)
at com.documentum.web.applet.ucfinvoker.LaunchRuntimeDelegate.connectRuntime(Unknown Source)
at com.documentum.web.applet.ucfinvoker.Java2DelegateImpl.access$201(Unknown Source)
at com.documentum.web.applet.ucfinvoker.Java2DelegateImpl$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.documentum.web.applet.ucfinvoker.Java2DelegateImpl.connectRuntime(Unknown Source)
at com.documentum.web.applet.ucfinvoker.LaunchRuntimeDelegate.safeConnectRuntime(Unknown Source)
at com.documentum.web.applet.ucfinvoker.LaunchRuntimeDelegate.getUcfSessionId(Unknown Source)
at com.documentum.web.applet.ucfinvoker.LaunchRuntimeDelegate.start(Unknown Source)
at com.documentum.web.applet.ucfinvoker.LaunchRuntime.start(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)



SEVERE: Error during retrieveing Requests:

java.io.EOFException

at java.io.DataInputStream.readFully(Unknown Source)

at java.io.DataInputStream.readUTF(Unknown Source)

at java.io.DataInputStream.readUTF(Unknown Source)

at com.documentum.ucf.common.transport.spi.StreamHelper.readString(StreamHelper.java:29)

at com.documentum.ucf.client.transport.impl.ClientReceiver.getRequests(ClientReceiver.java:44)

at com.documentum.ucf.client.transport.impl.ClientSession.handshake(ClientSession.java:510)

at com.documentum.ucf.client.transport.impl.ClientSession.handshake(ClientSession.java:485)

at com.documentum.ucf.client.transport.impl.ClientSession.run(ClientSession.java:201)



Cause

Bug 118836, install dab after Webtop or DA.



If Webtop is installed before DAB, you may experience the ucf-server-api.jar issue referring to different location, the one in DAB. The reason is that, dctm.jar ->manifest.mf has the following:

Application%20Builder/devws.jar

And devws.jar ->manifest.mf has ucf specified as below. This jar is in C:\Program Files\Documentum\Application Builder, the ucf-server_api.jar is under C:\Program Files\Documentum\Application Builder\lib



Resolution

1. Go to DOS prompt.

2. Enter:

==

set classpath=

==

3. Start WebLogic from that command line prompt and see if that works.



An alternative solution is to get rid of dctm.jar from classpath. Reference all the jar files under Documentum\shared directory in the classpath.

Why am I seeing error "All remote hosts failed" when trying to retrieve content?

Below are things to check when seeing error "Failed to transfer content due to a transport error com.documentum.ucf.common.UCFException: All remote hosts failed":

Background:
When using ACS to retrieve content (the default content transfer mode starting in 5.3 SP1), DFC produces URLs that point to content on the ACS/Content Server machine. UCF on the browser machine tries to use these URLs to retrieve the content. These URLs are produced based on a "base url" in the ACS config attribute. (The ACS config is managed in DA.) This means the browser machines requires connecting to the ACS/Content Server machine.

A URL will not be generated for an ACS that is not running but if ACS goes down AFTER the URL was generated that client will fail with the error but all other content requests will succeed using the pre-ACS content transfer mode (just using Content Server) until ACS is restarted.

1. One possibility for the error is that URLs cannot be DNS-resolved on a client computer. (like http://localhost, or http://servername instead of http://servername.emc.com). If need be, the base URL can be changed using IAPI:

API>retrieve,c,dm_acs_config
API>set,c,l,acs_base_url
SET>
API>save,c,l

In order to check which URL the browser is using to access content, change the UCF log level on a client side (where the browser is) by changing:

.level=FINE

In the file:

C:\Documents and Settings\\Documentum\ucf\\shared\config\ucf.client.logging.properties

The output goes to file- C:\Documentum\Logs\ucf.trace<….>.log

Another way is to get the same information on a Webtop/DFC side. Enable INFO or DEBUG logging for a category

com.documentum.acs

Webtop machine in the log4j.properties file. These changes should be picked up dynamically.

2. Check that a firewall does not restrict access to these URLs from the client computer.

3. Check the $DOCUMENTUM/shared/logs/AcsServer.log for errors.

4. If the following error occurs in the Java Method Server log:

FATAL [HttpProcessor[9080][4]] acs.com.documentum.acs.sdi.ACS -
java.lang.NoSuchMethodError: org.aspectj.runtime.reflect.Factory.makeJP(Lorg/aspectj/lang/JoinPoint$StaticPart;Ljava/lan
g/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lorg/aspectj/lang/JoinPoint;

and DCM is being used in the Docbase, go to C:\Program Files\Documentum\tcf\lib or the appropriate place on the UNIX system and rename file aspectjrt1.1.0.jar to something like aspectjrt1.1.0.bak

In some cases, you may be getting the "all remote hosts failed" error in a standalone docbase WITHOUT DCM, and in that case, you will need to go find the 1.2.0 version of that jar file, aspectjrt-1.2.0.jar, merged with custom documentum classes in the Documentum\product\5.3\tomcat\webapps\ACS\WEB-INF\lib\ucf-server-impl.jar class.
If you copy that the aspectjrt-1.2.0.jar to the lib directory and rename the aspectjrt-1.1.0.jar to something like .bak, then all errors go away.

5. If there is an error like 'java.lang.NoClassDefFoundError: org/aspectj/lang/NoAspectBoundException', the reason for this error is that Application Builder is installed on the same machine as the Content Server.

App Builder and ACS server use common jar file ucf-server-api.jar. In the classpath for ACS Server, the ucf-server-api.jar located in program Files\Application Builder\lib directory has precedence over the same jar file present in ACS server webapp lib directory. Quick test to confirm this would be rename the ucf-server-api.jar in Application Builder lib directory to ucf-server-api.bak and restart the Java Method Server. Note that you have to stop the method server before renaming the jar file as the jar will be in use while the server is running and will not allow you to rename the file.


The workaround for this is to install Application Builder on a different machine or modify the classpath of the java method Server so that App Builders ucf-server-api.jar is not in the classpath of the java method server.

Friday, November 7, 2008

Exception in thread "main" java.lang.NoClassDefFoundError

A simple Hello World example.

public class Hello {

public static void main(String argv[]) {

System.out.println("Hello world !");

}

}

then, when you compile it:

> javac Hello.java

and want to execute it:

> java Hello

Exception in thread "main" java.lang.NoClassDefFoundError: Hello

We set the CLASSPATH and JAVA_HOME enviroment variable correctly, and the problem was still the same..
When we copied the Hello.class into a lib directory of JAVA_HOME, it worked, but not from the current directory !

We tried different versions of java.. and do you know where this stupid problem is?

in the CLASSPATH there should be:
CLASSPATH=.;c:\programme\jboss\lib;c:\programme\
j2sdk1.4.2_08\lib;c:\programme\j2sdk1.4.2_08\jre\lib; ...

yes.. a dot .. it means, that it will search for classes bytecode in the current directory !

you can also tell java to search the current directory with the -classpath parameter

> java -classpath . Hello

Thursday, October 23, 2008

Automatic rendition on import

Symptoms

When configuring the repository with automatic renditions on import, the renditions are not happening.

Cause

Register.xml is missing an entry for the PDF profile.

Resolution

Follow the steps given in Pg 26,27 in the DTS Admin Guide for configuring the automatic renditions on import. You could find the renditions are not happening. This is because you need to add one more entry to the register.xml:



1. Stop the CTS Services.

2. Edit the register.xml(System/Media Server/System Profiles).

Add this to the :



3. Back up the log folder.

4. Start the CTS.

5. Check the logs for any errors.

6. Import the document and check the renditions

Sunday, October 12, 2008

How do I resolve the error, User "User_name" DOES NOT have Super User privileges

When you try to run the DocApp Installer with the ldap authentication, you may receive the error message below:

User "User_name" DOES NOT have Super User privileges.

EXPLANATION OF THE PROBLEM:

When you connect to the Docbase with the ldap authentications, you DO NOT need to specify an OS Domain Name. However, when you connect to the Docbase via DocApp Installer, you DO need to login with the user_name, Password and OS Domain name (even a dummy Domain name will work).


Your login to the Docbase via DocApp Installer with the user_name, Password and OS Domain name successes, but when you run the installer, will be NOT able to install the docapp and receive the error message above even you DO have a Super User privileges.



FIXING THE PROBLEM (ERROR):

1) Login to the Docbase via DA.

2) Select the user try to install the DocApp and go on his Properties.

3) In the attribute "Windows Domain" add the Domain name (or a dummy Domain name).

4) Save and exit.

5) Login and run the DocApp Installer again, it will work.


NOTE: You need to use the SAME Domain name to login to the DocApp Installer as the one you specified in the attribute "Windows Domain".


----------------------

Check the user_os_name: this should not be blank. it should be a valid name like 'dmadmin' then this issue will not occur

Sunday, October 5, 2008

How can I tell if the BOF Global Registry is configured correctly?

Symptoms

Need to troubleshoot the BOF user setup to allow connecting to a Global Repository/ Global Registry.

Cause

Troubles using BOF (TBOs/SBOs) or using version 6 web clients and be caused due to incomplete or incorrect configuration.

Resolution

To use BOF (TBO/SBO) requires that at least one of your Repositories be designated as the BOF Global Registry. Each Application Server must identify the BOF Global Registry it will use via the dfc.properties file.

There are two parts to setting up the BOF Global Registry:

1) making sure the "dm_bof_registry" Repository user is active.

2) making sure that the dfc.properties file on your Application Server(s) are correctly referencing the Repository that is acting as the BOF Global Registry and has the listed the correct user information for the dm_bof_registry user.

1. Verifying that a Repository is the BOF Global Registry:

===================================

-Using Documentum Administrator (DA), log into the Repository that should be the BOF Global Registry, using an administrator account.

-In Classic view, in the left navigation tree, click on the Administration node. In the page that appears, under the heading "User Management", click on "Search for Users".

-Search for the following user: 'dm_bof_registry" (enter this value next to the User Name label, and click Search).

-View the properties of this user "dm_bof_registry" (click the (i) icon).

-Make note of the user's 'State' and 'User Login Name'.

If the user State is 'Inactive', then this Repository is not the BOF Global Registry. To make this Repository the BOF Global Registry, follow Steps 2-4.

If the BOF Global Registry user is 'Active', you need to verify some information in your dfc.properties file on your Application Server(s).

From the Application Server machine, locate the dfc.properties file.

Open this file in any text editor. Ensure the following three attributes are set in the dfc.properties file:

dfc.bof.registry.repository =

dfc.bof.registry.username =

dfc.bof.registry.password =

Without the above three entries, the BOF Global Registry will not be set.

If these entries are missing or values are not complete, you will need to add and populate these values. See the following steps for more details.

2. Enabling the BOF Global Registry

===================================

The following section outlines the steps required to enable the BOF Global Registry using the Documentum Administrator (DA) application.

-Log into Documentum Administrator (DA) as an Administrator in the Repository where you want to enable TBO/SBO functionality.

-In Classic view, in the tree, click on the Administration node. In the page that appears, under the heading "User Management", click on "Search for Users".

-Search for the following user: 'dm_bof_registry" (enter this value next to the User Name label, and click Search).

-View the properties of this user 'dm_bof_registry" (click the (i) icon).

- The properties page will appear. From the properties page, ensure the following options and values are set to the following:

User State: Active

User Source: Inline Password

Restrict Folder Access: System

- For security purposes, change the default password (make a note of the new password).

- Click OK on the 'dm_bof_registry' user 'Properties' page.

3. Verifying the dfc.properties file

====================================

On each Application Server, locate the dfc.properties file. Open this file in any text editor. Ensure the following three attributes are set in the dfc.properties file:

dfc.bof.registry.repository =

dfc.bof.registry.username =

dfc.bof.registry.password =

Without the above three entries, the BOF Global Registry will not be set.

Note: The password supplied in the entry 'dfc.bof.registry.password' must be consistent with the password provided when setting the 'dm_bof_registry' password via Documentum Administrator (DA). The password must also be encrypted. For information on how to encrypt the password, see the next section in this document, entitled 'Encrypting Passwords for the dfc.properties file'.



4. Encrypting Passwords for the dfc.properties file

===================================================

The password provided in the 'dfc.properties' file must be encrypted. A utility is provided to encrypt this password. The following section outlines the steps required to invoke the password utility program to encrypt a password.

From a command prompt, execute the following:

java com.documentum.fc.tools.RegistryPasswordUtils

Note- If you are using java methods that use the TBOs/SBOs then you will need the following entries on the %DM_Home/config/dfc.properties file as well

dfc.bof.registry.repository =

dfc.bof.registry.username =

dfc.bof.registry.password =

Thursday, October 2, 2008

After installing Transformation Services, I do not see a Content Transformation Services Service listed in my Services

Cause

This can be because you have not configured your docbase yet, or because you have registered the service as an invalid user.

Resolution

When you first install a Transformation Services product you will only see the Admin listed as a service. This is because you have not configured to a docbase yet. Once you run the configuration utility to add a docbase, you should see three services:

Documentum Content Transformation Monitor Service
Documentum Content Transformation Services
Documentum CTS Admin. Agent


If you do not see three services after configuring you docbase this is most likely because the user that you used when installing the Transformation Services Product was not a local Administrator, or you did not specify the domain if it was a domain user. To resolve the issue you can do one of two things:



Unconfigure and uninstall and then re-install using a local Admin and domain in necessary.
Register the service manually by running the following utility:
cmd> C:\Program Files\Documentum\CTS\server_install\CTSService\InstallLocalCTS.bat



This should register the service with the Local System account. You will then need to manually change it to run as the local admin user.



Notes:

You can start the CTS service from a bat file to see if there are any problems with the service starting.
cmd> C:\Program Files\Documentum\CTS\server_install\CTSService\startCTS.bat

Make sure you run this from the command console as you will see any error message in the terminal.

You can reference the install.log located on the same directory as the installer for more information.
You can also run the installer with the following option for more verbose information:
cmd> rptsWinSuiteSetup.exe -is:log "C:\temp\rpts_install_log_txt"

Wednesday, October 1, 2008

Why does my custom PostProc or Action procedures fail after updating my Docbase

If after your upgrade to eContent Server 4.2.6f or higher, your attached lifecycle or promote operations fail and see your dm_bp_transition log files contain single line entries such as the one below, you should remove any Print #2 statements from your custom Action or PostProc procedure code.

Sample Error:
[ErrorCode] 1700 [ServerError] Illegal Procedure Call 'Action'. Dmbasic error: 52


Server patch version 4.2.6f made changes to the dm_bp_transition.ebs file so log files are ONLY created when there is an error. This is to address the large number of dm_bp_transition log files generated on the server (bug 42336). Any "Print #2," statements in you custom procedures that use to print to the dm_bp_transition log file, will now cause the procedure to fail since the file is only opened when an error condition occurs.

If you want to print to a custom log file you should open your own log file for output in your custom code and number it something other than #2. For example, in a custom PostProc procedure you could do the following:

=====================================================
Public Function PostProc(ByVal SessionID As String, _
ByVal ObjectId As String, _
ByVal UserName As String, _
ByVal TargetState As String, _
ByRef ErrorStack As String) As Boolean

Dim rci as integer
Dim ret as Boolean
Dim OutFile as String

On Error GoTo PostProc_Error

PostProc = False

OutFile = "my_debug_" & SessionID & ".txt"
ErrorStack = "Opening debug file " & OutFile & "for output:"

Open OutFile For Output As #4
Print #4, now() & " In PostProc Procedure..."

......

PostProc = True

Print #4, "PostProc Procedure Successful"
Close #4

Exit Function

PostProc_Error:

ErrorStack = "PostProcess Procedure Failed: " & ErrorStack
Print #4, ErrorStack
Close #4

End Function

=====================================================

The rest of your processing code would also contain any additional debug Print #4 statements.

This debug file will be written to the %DM_HOME%\bin directory on Windows or $DM_HOME/bin directory on Unix, of the server machine.

Tuesday, September 30, 2008

How to fix DM_API_E_EXIST/DM_SYSOBJECT_E_CANT_FETCH_INVALID_ID in DAB for DCM doc

How to fix the following errors in DAB for DCM docapp? This can happen if the DCM docapp has been installed multiple times. [DM_API_E_EXIST]error: "Document/object specified by 4b0027ed800f26a9 does not exist." [DM_SYSOBJECT_E_CANT_FETCH_INVALID_ID]error: "Cannot fetch a sysobject - Invalid object ID 4b0027ed800f26a9"

Here are the step to clear out the DAB errors:


1. Clean up the dmcl cache on the DAB box, delete the content under these subfolders located in c:\documentum\dmcl and c:\documentum\[docbase_name]

2. Re-run the DAB to open up dcm docapp. Write down the object_id of the orphaned objects

3. Once you got the list of errored object ids, log into DA, navigate to

* /system/Application/dcm, select 'how all object on the filter' on the upper right hand side

* open up the dcm docapp(the virtual document one) by clicking on it

* then select all _ref_4Bxxxxx that got from step2.

* from the pull down menu, Document->Virutal Document->remove child from dcm docapp, repeat this for all the orphaned object ids

4. Checkin the dcm docapp as the same version.

Now you should be able to open DCM docapp from DAB without errors.

Monday, September 29, 2008

How to fix failed promotion in Documentum Compliance Manager?

Use the following steps:



1. Get the object id of the controlled document that failed with promotion. Make sure you have the correct ID if the Controlled Document is a non-current version.

2. In DQL run the following query to find the status of the promotion:


select status from dcm_process_relation where relation_name = 'dcm_promote' and parent_id = '{OBJECT ID From step1}'

The status should be "Pending', if this is the case, run the following DQL to update the status:

update dcm_process_relation object set status = 'success' where relation_name = 'dcm_promote' and parent_id = '{OBJECT ID From step1}'

3. Retry promote.

Controlled documents are not getting Promoted

1. Set the Classpath for following:

C:\Program Files\Documentum\Shared\dcm.jar
C:\Program Files\Documentum\Shared\dcmSupport.jar
C:\Program Files\Documentum\Shared\dcmQueue.jar
C:\Program Files\Documentum\dctm.jar

2.Where are queue manager Logs

C:\Program Files\Documentum\dcmQueueManager\docbases\\config\logs

3. Login into Documentum Administrator (DA)

Go to locations and locate the files listed.
Cabinets/System/Media Server/Command Line Files
dcmCustomProfile.xml
ProfileSchema.dtd
Cabinets/System/Media Server/Profiles
ProfileSchema.dtd
Cabinets/System/Media Server/System Profile
dcmCustomProfile.xml
ProfileSchema.dtd
register.xml

If the Profiles are missing copy the xml files from Content Server from:

C:\Program Files\Documentum\dcmQueueManager\docbases\dcm53sp1_o9i\config\profiles

4. Queue manager needs to be installed for every instance of the Docbase in case there are mutilple Docbases

5. Stop the Queue manager service and execute the following Query for DCM 5.3 spx

DQL> select * from dmi_queue_item where name='dcm_custom_job'

If there is no result set, then the request is not being sent to the Queue manager, and there is no Docbase instance against the Queue manager

- Install DCM Queue manager Instance Add or Remove select the Docbase for the Installation ( Start - Programs - Documentum- DCM Queue Manager Instance Add or Remove)

6. User needs to have Write Permission to Promote the Controlled Document or Should be a Coordinator to Promote CD.

7. If the QM is installed on D:\ drive, need to check if dctm.jar is being set correctly in the classpath.

8. Check if the Queue items are visible by running the following Query.

For DCM 5.2.5 spx:

DQL> Select * from dmi_queue_item where name = 'dm_mediaserver' (DCM 5.2.5 SPx)

DQL> Delete dmi_queue_item objects where name='dm_mediaserver'

For DCM 5.3 spx:
DQL> Select * from dmi_queue_item where name = 'dcm_custom_job' (DCM 5.3 SPx)
DQL> Delete dmi_queue_item objects where name='dcm_custom_job'

Saturday, September 27, 2008

Can I reinstall a docapp that already exists in the target docbase?

Yes, you can reinstall a docapp on a docbase more than once.


Reinstalling a docapp after some modifications will not cause any problems on the target docbase. Basically, a docapp is just a virtual document, and all properties of a virtual document apply to a docapp.


To clarify further, all objects in the docapp such as lifecycle and alias set will be versioned after you reinstalled the docapp. Certain objects, such as custom object types and custom attributes are not versioned. Instead these objects are replaced by the newer version that are installed with the new docapp.


If for some reasons, the modifications that were made on the objects in the docapp was not satisfactory, then you can delete the newer version of the objects.


For example:


- You created a lifecycle on the development docbase, archived, and installed it on the production docbase.

- Then you made some modifications on the lifecycle in the same docapp, and you reinstalled the docapp to the production docbase.

- However, the changes that you made were not complete.

- You can delete the latest version of the lifecycle using Developer Studio inside the docapp on your production docbase.

- Or, you can make the necessary changes on your development system and reinstall the docapp again.

How do I delete/destroy a Documentum Lifecycle?

When attempting to delete/destroy a lifecycle you may get the following error:

[DM_POLICY_E_CANT_DESTROY]error: "Cannot destroy policy identified by
since its state is installed or currently referenced by
some sysobject."

To delete a lifecycle, first make sure that no documents in the docbase are referring to that Lifecycle. Run the following DQL to find out if there are any documents referring to the lifecycle:

select * from {object_type} where r_policy_id = '{lifecycle_object_id}'

If no documents are using or referring to the Lifecycle, then the most likely cause of this error is that the Lifecycle is still in an "Installed" state in the docbase. To uninstall the Lifecycle and destroy the lifecycle run the following API's:

uninstall,c,{lifecycle_id}
destroy,c,{lifecycle_id}

DiWAExecuteProcessFailed!Cannot add Documentum Compliance Manager QueueManager instance

Symptoms

When trying to add a DCM queueManager instance, the following error is received in a popup window.

DiWAExecuteProcess failed!--DiUtil:ExecuteProcess failed to execute :D:\\Progra~1\DOCUMEN~1\smaster\srunner.exe" "d:\PROGRA~1\DOCUME~1\DCMQUE~1\scripts\svcStartMediaServer_edoctst.txt" -- The system cannot find the file specified; for more detailed information, see the error log:

Cause

The configurator cannot find srunner.exe. This could be because a virus scanner is deleting the file.

Resolution

Turn off viruscan temporarily. Replace a copy of rsunner.exe in the install directory (i.e., C:\program files\Documentum\DCMQueueManager\smaster) from another environment, otherwise, reinstall DCM QueueManager.

Friday, September 26, 2008

Error in DAB while opening Docapp

[DM_API_E_EXIST]error: "Document/object specified by 0b01278f8000bc3b does not exist."

[DM_SYSOBJECT_E_CANT_FETCH_INVALID_ID]error: "Cannot fetch a sysobject - Invalid object ID 0b01278f8000bc3b"

The error is pointing to a folder that no longer exists. Clear the dmcl cache on the client and CS host. Restart DAB and open the DocApp, this should take care of the problem.

Also flush the cache for the folder object
API>Flush,c,ddcache,dm_folder
API>Flush,c,registrycache,dm_folder
API>Flush,c,persistentcache

Tags for various object types in Documentum Content Server

This list was updated on April 21, 2005. It includes up to 5.3 object list.


NOTE: There is a gap in the sequence due to the fact that composites have

been removed. Tag 22 is no longer used.

dm_audittrail_attrs = 0; 00 (also dm_auth_config, dmc_completed_workflow, dmc_completed_workitem, dmc_composite_predicate, dmc_module_config, dmc_readcomment, dm_state_type, dmc_transition_condition, dmi_wf_attachment, dmi_wf_timer, dmc_workqueue, dmc_workqueue_doc_profile, dmc_workqueue_policy, dmc_workqueue_user_profile)


dmi_session = 1; 01

dm_object = 2; 02

dm_type = 3; 03

dm_collection = 4; 04

dmr_containment = 5; 05

dmr_content = 6; 06

dm_app_ref = 7; 07


dm_sysobject = 8; 08 (also dm_acs_config, dm_application, dm_cache_config, dm_category_class, dm_ci_config, dmc_comment, dm_component, dm_ftindex_agent_config, dm_ftengine_config, dmc_jar, dm_job, dm_job_request, dm_job_sequence, dm_ldap_config, dm_locator, dm_media_profile, dm_network_location_map, dm_procedure, dm_qual_comp, dm_retainer, dmc_richtext, dmc_rps_authority, dmc_rps_base_date, dmc_rps_child_strategy, dmc_rps_condition, dmc_rps_contact, dmc_rps_disposition_method, dmc_rps_event, dmc_rps_hold, dmc_rps_retainer, dmc_rps_retention_policy, dm_script, dm_smart_list, dm_ssa_policy, dm_webc_config, dm_webc_target)


dm_document = 9; 09 (also dm_docset, dm_docset_run, dm_email_message, dm_esign_template, dmc_notepage, dmc_tcf_activity, dmc_tcf_activity_template, dm_xfm_form, dm_xfm_instance, dm_xfm_schema, dm_xml_config, dm_xml_custom_code, dm_xml_style_sheet, dm_xml_zone)


dm_query = 10; 0a

dm_folder = 11; 0b (also dmc_aspect_type, dm_category, dmc_java_library, dmc_module, dmc_room, dm_taxonomy, dmc_topic, dmc_workqueue_category, dm_xml_application)


dm_cabinet = 12; 0c

dm_assembly = 13; 0d

dm_store = 14; 0e

dm_fulltext = 15; 0f

dm_method = 16; 10

dm_user = 17; 11

dm_group = 18; 12

dm_api = 20; 14

dm_type_manager = 21; 15

dm_composite = 22; 16

dm_outputdevice = 23; 17

dm_router = 24; 18

dm_registered = 25; 19

dmi_queue_item = 27; 1b

dm_verity_coll = 28; 1c

dm_event = 29; 1d

dmi_vstamp = 30; 1e

dmi_index = 31; 1f

dmi_sequence = 32; 20

dm_transaction_log = 33; 21

dm_file = 34; 22

dmi_otherfile = 35; 23

dm_verity_index = 36; 24

dm_inbox = 37; 25

dmi_registry = 38; 26

dm_format = 39; 27

dm_filestore = 40; 28

dm_netstore = 41; 29

dm_linkstore = 42; 2a

dmi_linkrecord = 43; 2b

dm_distributedstore = 44; 2c

dmi_replica_record = 45; 2d

dmi_type_info = 46; 2e

dm_dump_record = 47; 2f

dmi_dump_object_record = 48; 30

dm_load_record = 49; 31

dmi_load_object_record = 50; 32

dmi_change_record = 51; 33

dm_blob_ticket = 52; 34

dm_staged_document = 53; 35

dm_dist_comp_record = 54; 36

dm_relation = 55; 37 (also dmc_aspect_relation, dm_category_assign, dmc_rps_phase_rel, dmc_rps_retainer_event_rel, dm_state_extension, dm_relation_ssa_policy, dmc_wf_package_schema)


dm_relationtype = 56; 38

dm_location = 58; 3a

dm_fulltext_index = 59; 3b

dm_docbase_config = 60; 3c

dm_server_config = 61; 3d

dm_mount_point = 62; 3e

dm_docbroker = 63; 3f

dm_blobstore = 64; 40

dm_note = 65; 41

dm_remotestore = 66; 42

dm_remoteticket = 67; 43

dm_docbaseid_map = 68; 44

dm_acl = 69; 45

dm_policy = 70; 46

dm_reference = 71; 47

dm_recovery = 72; 48

dmi_package = 73; 49

dmi_workitem = 74; 4a

dm_process = 75; 4b

dm_activity = 76; 4c

dm_workflow = 77; 4d

dm_dd_info = 78; 4e

dm_nls_dd_info = 79; 4f

dm_domain = 80; 50

dm_aggr_domain = 81; 51

dm_expression = 82; 52

dm_literal_expr = 83; 53

dm_builtin_expr = 84; 54

dm_func_expr = 85; 55

dm_cond_expr = 86; 56

dm_cond_id_expr = 87; 57

dmi_expr_code = 88; 58

dm_key = 89; 59

dm_value_assist = 90; 5a

dm_value_list = 91; 5b

dm_value_query = 92; 5c

dm_value_func = 93; 5d

dm_federation = 94; 5e

dm_audit_trail = 95; 5f (also dm_audittrail_acl, dm_audittrail_group)


dm_extern_store = 96; 60

dm_extern_file = 97; 61 (also

dm_extern_url = 98; 62

dm_extern_free = 99; 63

dmi_subcontent = 100; 64

dm_foreign_key = 101; 65

dm_alias_set = 102; 66

dm_plugin = 103; 67

dmi_dd_common_info = 104; 68

dmi_dd_type_info = 105; 69

dmi_dd_attr_info = 106; 6a

dm_display_config = 107; 6b

dm_scope_config = 108; 6c

dm_ca_store = 109; 6d

dm_docuworks = 128; 80

Thursday, September 25, 2008

Eclipse setup with documentum

http://developer.emc.com/developer/Articles/ConfiguringDFCDevEnv.htm

How to Use Telnet to Test SMTP Communication

Using the Nslookup Command-Line Tool to Find the IP Address of an SMTP Server
To connect to a destination SMTP server by using Telnet on port 25, you must have the fully qualified domain name (FQDN) or the IP address of the SMTP server. The easiest way to find this information is to use the Nslookup command-line tool to find the MX record for the destination domain.

To use the Nslookup tool to find the IP address of an SMTP server
At a command prompt, type nslookup, and then press ENTER. This command opens the Nslookup session.

Type set type=mx and then press ENTER.

Type set timeout=20 and then press ENTER. By default, Windows DNS servers have a 15-second recursive DNS query time-out limit.

Type the name of the domain for which you want to find the MX record. For example, to find the MX record for the fabrikam.com domain, type fabrikam.com., and then press ENTER.

Note:
The trailing period ( . ) indicates a FQDN. The use of the trailing period prevents any default DNS suffixes that are configured for your network from being unintentionally added to the domain name.

The output of the command will resemble the following:

Copy Code
fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com
fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com
mail1.fabrikam.com internet address = 192.168.1.10
mail2 fabrikam.com internet address = 192.168.1.20

You can use any of the host names or IP addresses that are associated with the MX records as the destination SMTP server. A lower value of preference indicates a preferred SMTP server. You can use multiple MX records and different values of preference for load balancing and fault tolerance.

When you are ready to end the Nslookup session, type exit, and then press ENTER.

Note:
Firewall or Internet proxy restrictions that are imposed on your organization's internal network may prevent you from using the Nslookup tool to query public DNS servers on the Internet.
MX records are not strictly required for internal message flow inside an Exchange organization. If you have to find the FQDN of any Hub Transport server or subscribed Edge Transport server in your organization, you can use the following command in the Exchange Management Shell: Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isEdgeServer -eq $true} | Format-List Fqdn,ServerRole
For more information, see Get-ExchangeServer and Pipelining.

Using Telnet on Port 25 to test SMTP Communication
The procedure in this section shows how to use Telnet on port 25 to test SMTP communication. The procedure uses the values that are described in the following list:

Destination SMTP server mail1.fabrikam.com

Source domain contoso.com

Sender's e-mail address chris@contoso.com

Recipient's e-mail address kate@fabrikam.com

Message subject Test from Contoso

Message body This is a test message

Note:
You should always use a valid sender e-mail address so that any non-delivery report (NDR) messages that are generated by the destination SMTP server are delivered to the sender of the message.

To use Telnet on port 25 to test SMTP communication
At a command prompt, type telnet, and then press ENTER. This command opens the Telnet session.

Type set localecho and then press ENTER. This optional command lets you view the characters as you type them. This setting may be required for some SMTP servers.

Type set logfile . This optional command enables logging of the Telnet session to the specified log file. If you only specify a file name, the location of the log file is the current working directory. If you specify a path and a file name, the path must be local to the computer. Both the path and the file name that you specify must be entered in the Microsoft DOS 8.3 format. The path that you specify must already exist. If you specify a log file that doesn't exist, it will be created for you.

Type open mail1.fabrikam.com 25 and then press ENTER.

Type EHLO contoso.com and then press ENTER.

Type MAIL FROM:chris@contoso.com and then press ENTER.

Type RCPT TO:kate@fabrikam.com NOTIFY=success,failure and then press ENTER. The optional NOTIFY command defines the particular delivery status notification (DSN) messages that the destination SMTP server must provide to the sender. DSN messages are defined in RFC 1891. In this case, you are requesting a DSN message for successful or failed message delivery.

Type DATA and then press ENTER. You will receive a response that resembles the following:

Copy Code
354 Start mail input; end with .

Type Subject: Test from Contoso and then press ENTER.

Press ENTER. RFC 2822 requires a blank line between the Subject: header field and the message body.

Type This is a test message and then press ENTER.

Press ENTER, type a period ( . ) and then press ENTER. You will receive a response that resembles the following:

Copy Code
250 2.6.0 Queued mail for delivery

To disconnect from the destination SMTP server, type QUIT and then press ENTER. You will receive a response that resembles the following:

Copy Code
221 2.0.0 Service closing transmission channel

To close the Telnet session, type quit and then press ENTER.

Interpreting the Results of a Telnet Session with an SMTP Server
This section provides details about the responses that may be provided to the commands that you entered in the previous example.

Note:
The 3-digit SMTP response codes that are defined in RFC 2821 are the same for all SMTP messaging servers. The text descriptions may differ slightly for some SMTP messaging servers. In this example, the destination computer is running Exchange Server 2007.

Open mail1.fabrikam.com 25
Successful Response 220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at

Failure Response Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed

Possible Reasons for Failure

The destination SMTP service is unavailable.

There are restrictions on the destination firewall.

There are restrictions on the source firewall.

An incorrect FQDN or IP address for the destination SMTP server was specified.

An incorrect port number was specified.

EHLO contoso.com
Successful Response 250 mail1.fabrikam.com Hello []

Failure Response 501 5.5.4 Invalid domain name

Possible Reasons for Failure There are invalid characters in the domain name. Alternatively, there are connection restrictions on the destination SMTP server.

Note:
EHLO is the Extended Simple Message Transfer Protocol (ESMTP) verb that is defined in RFC 2821. ESMTP servers can advertise their capabilities during the initial connection. These capabilities include their maximum accepted message size and their supported authentication methods. HELO is the older SMTP verb that is defined in RFC 821. Most SMTP messaging servers support ESMTP and EHLO.

MAIL FROM:chris@contoso.com
Successful Response 250 2.1.0 Sender OK

Failure Response 550 5.1.7 Invalid address

Possible Reasons for Failure There is a syntax error in the sender's e-mail address.

Failure Response 530 5.7.1 Client was not authenticated

Possible Reasons for Failure The destination server does not accept anonymous message submissions. You receive this error if you try to use Telnet to submit a message directly to a Hub Transport server.

RCPT TO:kate@fabrikam.com NOTIFY=success,failure
Successful Response 250 2.1.5 Recipient OK

Failure Response 550 5.1.1 User unknown

Possible Reasons for Failure The specified recipient does exist in the organization.

Wednesday, September 24, 2008

Can I change the SMTP server after Content Server installation?

Symptoms

Need to change SMTP server after install.

Cause

Content Server Installation Guide 5.3 SP1 page 43 has the following details on SMTP Server setting:
-----------------------------------
SMTP server on Windows

On Windows hosts, Content Server must be able to connect to an SMTP mail server. The
SMTP server can be an SMTP server located on your network or it can be the SMTP
server provided with Windows 2000. During the installation or upgrade procedure, you
must provide the name or IP address of the computer hosting the SMTP server.

If a valid SMTP server host name is not available during installation, supply an invalid
host name and the installation will finish. Do not leave the field blank. After installation,
add a valid SMTP server host name to the smtp_server attribute of the server config
object. Reinitialize the server after you update the server config object.
-----------------------------------



Resolution

You can change smtp_server attribute in one of the following ways:

1. DA
Navigate to DA > Administration > Configuration > Server
Click "i" icon
Change the SMTP Server
Click OK
Restart docbase


2. API
API> retrieve,c,dm_server_config
API> set,c,l,smtp_server
SET>
API>save,c,l
Then restart docbase

Resource file not found. C...\PDFaquaDocbaseInstaller.int

Symptoms

PDFAqua Installer fails on Windows 2003 R2, with Error Resource file not found. C...\PDFaquaDocbaseInstaller.int

Resolution

Right Click on My Computer- Properties

Click Advanced Tab

On Performance Section Click Settings Button

Select Data Execution Prevention TAB.

Select the Radio Button

Turn on DEP for essential windows programs & services only

Click apply to close of My computer Properties

- Restart the computer.

- Run the PDFaqua installer.

Tuesday, September 23, 2008

Why am I getting a DaDocbaseMapStatistics error when I log onto Documentum Admin

The following error is returned when I log onto DA. A popup windows open:


java.lang.NoClassDefFoundError: com/documentum/admin/commands/DaDocbaseMapStatistics

at com.documentum.webcomponent.admin.favorites.AdministrationFavorites.setDoc baseMap(Unknown Source)


Check the classpath environment variable.


Make sure that you add the following path:


C:\Program Files\Documentum\Shared\admin.jar;

Monday, September 22, 2008

How do I delete a custom object type

Before starting this process, go into the Desktop Client and ensure there are no documents of the custom type to be deleted. If there are documents of this custom type then you cannot delete the type.

- Start Documentum Developer Studio (DDS)

- Open and check out the DocApp

- Delete the object type

- Check in the DocApp

- Close DDS

Then,
- Start the Documentum Administrator (DA)
- Go to Types
- Drill down to get to the object type deleted in DDS
- Edit the object type
- Scroll to the bottom, there will be a DROP option
- Select DROP
- Close DA
- Kill the Desktop Client processes using the Task Manager (Processes Tab), ending the following processes:

dcathmgr.exe
dcevtsrv.exe
explorer.exe

Then go File > New Task (Run..) and enter: explorer

- Start up the Desktop Client again and ensure that the object type isn't available for use when creating a new document

- Open DDS and add the object type again.

How do you delete a workflow instance?

You can delete a workflow instance by using the destroy method. However, you can only destroy a workflow instance that is in the dormant, finished, or terminated state. The steps are as follows:

1) Halt the workflow instance. To halt a running workflow use the Halt method:
dmAPIexec ("halt, , ") This sets the r_runtime_state attribute to halted.

2) Abort the workflow instance. To abort the workflow use the Abort method:
dmAPIexec ("abort, , "). This sets the r_runtime_state attribute to terminated.

3) Destroy the workflow instance. To destroy the workflow use the Destroy method:
dmAPIexec ("destroy , ,").

Destroying a workflow instance removes its packages and workitems permanently.
When a workflow is aborted, notification will be sent to supervisor, and the inbox task will disappear from the performer's inbox.

Note: This does not remove the Workflow Template and the corresponding workflow activities.

Friday, September 19, 2008

DBWarning Job is missing

Why is the DBWarning job missing from the toolset for 3.1.7 and SQL7.0?

SOLUTION

The DBWarning job has been removed from 3.1.7 for SQL 7.0. This release performs the operations automaticaly and handles the conditions that the DBWarning job used to report, therefore, it is no longer required for SQL 7.0 and was removed.

Wednesday, September 10, 2008

DCM : Promote Document

promote a document manually from Request to In Progress state.
This is the message i get.

Document class prohibits manual promotion in this state

Solution:
Change the lifecycle extensions to enable manual promotion.

How can I recover a lifecycle that contains deleted procedure objects (actions)?

ID: esg12595
SOLUTION

If a procedure object has been deleted from a lifecycle you may encounter the error.

Unable to open the actions for this state:

DfException@71a:: THREAD: main; MSG: [DM_API_E_EXIST]error: "Document/object specified by 0800a75a80000d48 does not exist."

[DM_SYSOBJECT_E_CANT_FETCH_INVALID_ID]error: "Cannot fetch a sysobject - Invalid object ID 0800a75a80000d48"; ERRORCODE: 100; NEXT: null

The way to solve this problem is as follows:

1. Remove the reference to the missing procedure.
- Uninstall the lifecycle (Example: WebPublisher will not function in this state so they have to inform their users that WebPublisher will be unavailable until the problem is fixed.)
- Dump the dm_policy object in IAPI
- Locate the offending id in the action_object_id repeating attribute
- Set the value to nullid (0000000000000000) at that index.
- Save the lifecycle

2. Recreate the actions for the state (Assuming they know what actions they want in the state)
- Open the fixed dm_policy object in the Lifecycle Editor of DDS.
- Open the state and add the actions

In the initial case for this SN while in DDS the default WebPublisher Engineering Lifecycle produced the error above. Customer deleted procedure objects.

This same process should apply to other Lifecycle applications.

Other complaints and/or error messages may include:

- I cannot view or edit any Actions in a lifecycle.
- I have created a new lifecycle from scratch and the same problem and error message appear.
- DfException@5aa:: THREAD: main; MSG: [DM_POLICY_E_BAD_ACTION]error: "The policy identified by 4600a75a80000d46 has an invalid action object id 0800a7580000d47 specified for start Start."; ERRORCODE : 100; NEXT: null

How do I configure DTS to work with DCM docbases so that controlled documents can have renditions created on demand?

How do I configure DTS to work with DCM docbases so that controlled documents can have renditions created on demand ?

Solution:
CTS server does not work unless the classpath for the DTS service

is updated to include dcm.jar and dcmSupport.jar .

In addition the Business Objects that DCM uses and any additional objects the customers wants to be use must be added to the dbor.properties file on the CTS server where DTS and or ADTS is running. This is described in the DCM 5.3 sp1 release notes. For example the following objects at minumum must be added.

dcm_extended_sysobject=type,com.documentum.dcm.type.DcmExtendedSysobject,5.0

See the Doc Control Manager 5.3 sp1 release notes and bug # 107480.

Unable to tarnsform msw8 to pdf

select * from dm_queue where name='dm_autorender_win31' - if it retruns something .. lets clean this up

delete dm_queue objects where name='dm_autorender_win31'

Restart CTS Service .. Queue the item again .. check there must be only 1 item in the queue ..

Note:
We found that controlled documents were getting stuck in the queue which would lead to uncontrolled documents not being rendered. After clearing the queue, we sent an uncontrolled document for transformation and it was rendered successfully. We then tried sending a controlled document and found that it would not render.

Verified that steps were followed to allow for controlled documents to be rendered:
1. dcm.jar and dcmSupport.jar to C:\Program Files\Documentum\Shared on were added to DTS server (also added dcmQueue.jar and dcmQueueImpl.jar)
2. the classpath entry was added
3. Verified that the dbor.properties file had the correct entries.

We are still unable to render controlled documents. I found this thread, http://forums.emc.com/nsepn/webapps/xpsgggfs31465mnldcpq14543562/forums/thread.jspa?threadID=47974, and attempted to correct the syntax of the classpath entry. After following the instructions we were still unable to render controlled documents.

The queue item with ID (1b018a8c8000b3aa) and message 'rendition_req_ps_pdf' was signed off as it reached its expiry age.

The queue item with ID (1b018a8c8000b3aa) and message 'rendition_req_ps_pdf' was signed off as it reached its expiry age.".

There is one xml file CTSServerService.xml or mediaserverservice.xml with a configuration of maxQueueItemAge in 1m (one minute).

Change this to 5m and check again.

CTS : msw6template and msw6 files not rendered to PDF

msw6template and msw6 files not rendered to PDF
ID: esg83952
SOLUTION
Symptoms

If you are trying to render the following formats to PDF you may not be able to get the PDFs:

- msw Word 4.x, 5.x (DOS)
- msw3 Word 3.0-4.x (MacOS, Windows)
- msw6 Word 6.0 (MacOS), 6.0-7.0 (Windows)
- msw6template Word 6.x template (MacOS, Windows)
- mswm Word 4.x, 5.x (MacOS)
- mswm1 Word 1.x (MacOS)
- msww Word 1.x, 2.x (Windows)

The rendition will fail and the CTS_log.txt will show the following messages:

INFO [ Thread-31] CTSPluginHandlerImpl - The profile legacy_to_pdf does not support msw6 to pdf transformation
INFO [ Thread-31] CTSLegacyQueueProcessor - Unable to execute the profile of the queue item (1b010ca380165582)

Cause

These formats are not supported in the DTS transformation profiles.

Resolution

You must add these formats into the profiles by performing the following steps:

1) In the repository, navigate to: /System/Media Server/System Profiles.

2) Select "Show all objects and versions" from the dropdown list on the top right.
3) Check out legacy_to_pdf & document_to_pdf_dts (assuming you are using DTS 5.3 SP4).
4) Open the checked out files on your local machine in an editor.
5) Add the following to both files, within the formats section:
Format source="msw" target="pdf"
where source is the format you must render.
6) Save and close the files.
7) Check in both profiles.
8) On the DTS server, navigate to %CTS%\config (For example: C:\Program Files\Documentum\CTS\config).
9) Open the "FormatMapper.xml" file in an editor.
10) Add the following, within the section:
FormatMapper CTSFormat="doc" DocumentumFormat="msw"/
where DocumentumFormat is the format you must render.
11) Save and close the file.
12) Restart the CTS service(s).

What should you check if the customer cannot transform document in DCM?

What should you check if the customer cannot transform document in DCM?
ID: esg44700
SOLUTION

Symptoms

What should you check if the customer cannot transform document in DCM"

Cause

When trying to create a PDF rendition of a document in DCM, you may see an error like the following in the cts log:

"com.documentum.cts.exceptions.internal.CTSServerTaskException: com/documentum/dcm/aspect/IDcmControlledDocAspect

Cause Exception was:

java.lang.NoClassDefFoundError: com/documentum/dcm/aspect/IDcmControlledDocAspect"

Resolution

Make sure you have gone through all the steps for setting up CTS, DTS, ADTS to work with DCM.

First, you need to copy the dcm.jar and dcmsupport.jar file from the DCM machine to the Media Server machine and put them in the following path:

\program files\documentum\shared

You should add the path and filename to the CLASSPATH for both files.

Then, you need to modify the registry to point to the path for those files.

In HKEY_LOCAL_MACHINE\system\currentcontrolset\services\documentumcts\parameters you need to modify the app parameters entry and add the full path to the dcm.jar and dcmsupport.jar files.

For example:

\program files\documentum\shared\dcm.jar;\program files\documentum\shared\dcmsupport.jar

Then you need to edit the startcts.bat file. Edit the file in a text editor. Modify the class.path entry and again add the full path to the dcm.jar and dcmsupport.jar files.

For example:

\program files\documentum\shared\dcm.jar;\program files\documentum\shared\dcmsupport.jar

ADTS : [DM_VEL_INSTANTIATION_ERROR]error: "Cannot instantiate Java class"

com.documentum.cts.exceptions.internal.CTSProfileServiceException: [DM_VEL_INSTANTIATION_ERROR]error: "Cannot instantiate Java class"
Cause Exception was: Exception during updating profile cache document_to_pdf_dts

ADTS 6.0 6.0SP1 [DM_VEL_INSTANTIATION_ERROR]error: Cannot instantiate Java class

ID: esg93948
Product(s): Advanced Document Transformation Services
Related Bugs: 154355, 150077
SOLUTION

Symptoms

ADTS 6.0 6.0SP1 [DM_VEL_INSTANTIATION_ERROR]error: Cannot instantiate Java class. ADTS 6SP1 does not rendition documents.

The following error is thrown in the CTS log file:
com.documentum.cts.exceptions.internal.CTSProfileServiceException: [DM_VEL_INSTANTIATION_ERROR]error: "Cannot instantiate Java class"
Cause Exception was: Exception during updating profile cache transformEmlToPDF
DfException:: THREAD: Thread-10; MSG: [DM_VEL_INSTANTIATION_ERROR]error: "Cannot instantiate Java class"; ERRORCODE: 1902; NEXT: null
at com.documentum.services.dam.impl.transform.MediaProfile.initParameters(MediaProfile.java:417)
at com.documentum.services.dam.impl.transform.MediaProfile.getProfileNameAttr(MediaProfile.java:149)
at com.documentum.services.cts.impl.profile.CTSProfile___PROXY.getProfileNameAttr(CTSProfile___PROXY.java)
at com.documentum.cts.impl.services.ctsprofile.CTSProfileManagerImpl.createProfile(CTSProfileManagerImpl.java:1208)
at com.documentum.cts.impl.services.ctsprofile.CTSProfileManagerImpl.addInCache(CTSProfileManagerImpl.java:1060)

Caused by: DfServiceInstantiationException:: THREAD: Thread-10; MSG: [DM_VEL_INSTANTIATION_ERROR]error: "Cannot instantiate Java class"; ERRORCODE: 1902; NEXT: null
at com.documentum.fc.client.impl.bof.classmgmt.ModuleManager.loadModuleClass(ModuleManager.java:211)
at com.documentum.fc.client.impl.bof.classmgmt.ModuleManager.getModuleClass(ModuleManager.java:165)
at com.documentum.fc.client.impl.bof.classmgmt.ModuleManager.newModule(ModuleManager.java:120)
at com.documentum.fc.client.impl.bof.classmgmt.ModuleManager.newService(ModuleManager.java:89)
at com.documentum.fc.client.DfClient$ClientImpl.newService(DfClient.java:412)
at com.documentum.services.dam.impl.transform.MediaProfile.initParameters(MediaProfile.java:340)

Cause

ADTS 6.0/6.0SP1 is installed against the 5.3/5.3SPx repository without any D6 repository.

Resolution

Customers may tend to assume that D6 ADTS is fully backward compatible with the 5.3/5.3SPx repository and they may be misled due to a lack of accurate and explicit documentation. ADTS 6/6SP1 requires a D6 global registry to successfully get ADTS up and running. This in turn requires installing the D6 Content Server. Even if you follow the instructions in Bug 150077 and deploy Transformation and Rich_Media_Services docapps manually, ADTS will not work unless you have a D6 Global registry.

Per Support solution esg92090, this issue could be worked around by manually deploying the ctsTransformImpl.jar file locally in the BOF registry with the CTS host. Although esg92090 is proven to work, this method has not been tested by the CTS QA Team and is therefore not officially supported by CTS/ADTS Engineering.

A Documentation bug# 154355 is logged to include these details in the ADTS6/6SP1 Release Notes or Installation Guide.

Note: If you already have D6 installed with GR, the steps to resolve the same error are provided in support note esg98200.

SEE THESE SOLUTIONS ALSO:

esg92090 CTS 6.0 users need to have a D6 Global Repository
esg98200 DM_VEL_INSTANTIATION_ERROR --CTS docapps Tranformation and Rich media doesn't install properly

Cannot create/import controlled document with 10022 error.

Cannot create/import controlled document with 10022 error.
ID: esg76557
SOLUTION

ERROR: Failed when creating new controlled document/object. 10022, This is a bug fix in DCM 5.3 SP2
- Trouble shooting steps to resolve 10022, error message
1. Check if custom types to the Acceptable types in the Default Lifecycle, using DAB.
2. Check if data dictionary population is set to true

ture
3. Check if the dcm.jar, dcmSupport.jar are set in the Classpath
4. Check if the Superuser can check in Controlled Document, if so, refer to support note SN: 44709 . This is a bug fix in DCM 5.3 SP2
5. Check if this is migration of configuration, if so check permission sets have been defaulted to what is OOTB, and not as what designed in DCM 5.3 SP1. Change the permission set to point to the custom permission sets
6. you may be hitting this Bug# 108750

----
Issue Number: 152099
Severity: 1 - Critical
Status: Fixed
Problem Summary: Author cannot create controlled document unless unprotect the group_name dm_superusers_dynamic. For DCM 5.3 sp4 and D6 content server.
Planned Fix Release:
Patch Available/Release:
Duplicate of: 153105

---
The following errors can occur when creating or importing new controlled documents in DCM without using the repository installation owner account:

ERROR: Failed when creating new controlled document/object. 10022

Or

Checkin Controlled Document fails.

More details from error messages or from JMS logs:
..
# [ 2609200048 ] Fri Nov 4 12:11:57 2005 280842 ( 0.000 sec) ( 262 rpc) API> get,s4,sessionconfig,r_user_name

# [ 2609200048 ] Fri Nov 4 12:11:57 2005 280884 ( 0.000 sec) ( 262 rpc) Res: 'dmadmin'

# [ 2609200048 ] Fri Nov 4 12:11:57 2005 281449 ( 0.000 sec) ( 262 rpc) API> attach,s3,090188b380005fcf,460188b380000983,,dcm52

# [ 2609200048 ] Fri Nov 4 12:11:57 2005 281698 ( 0.000 sec) ( 262 rpc) Server RPC: SysObjAttach (090188b380005fcf)

# [ 2609200048 ] Fri Nov 4 12:11:59 2005 710201 ( 2.429 sec) ( 263 rpc) Res: ' '

# [ 2609200048 ] Fri Nov 4 12:11:59 2005 710409 ( 0.000 sec) ( 263 rpc) API> getmessage,s3,3

# [ 2609200048 ] Fri Nov 4 12:11:59 2005 710473 ( 0.000 sec) ( 263 rpc) Server RPC: GET_ERRORS (0000000000000000)

# [ 2609200048 ] Fri Nov 4 12:11:59 2005 711840 ( 0.001 sec) ( 264 rpc) Server RPC: MultiNext (29)

# [ 2609200048 ] Fri Nov 4 12:11:59 2005 713085 ( 0.003 sec) ( 265 rpc) Res: '[DM_POLICY_E_ERROR_1600]error: "The User Actions Proc failed. Details:Error saving the sysobject: [DM_SYSOBJECT_E_LINK_PERMIT2]error: "Linking or unlinking to the folder '/Controlled Docs/In Progress' failed on sysobject '090188b380005fcf'. WRITE permit is required on the folder, when using folder security."

This error occurs when the repository installation owner does not have WRITE permission in the /Controlled Docs/In Progress folder.

To fix this problem, please add repository installation owner(aka dmadmin) into administrator role.

DCM : Controlled Doc is greyed

Controlled Doc is greyed :

Check if the user has co-ordinator access and should be in superuser_dynamic

check if there are any doc class in this envr, create one as it requires doc class for a cntrl document.

CTS Service Crash and Why ?

CTS service crash

ID: esg80644
Product(s): Document Transformation Services, Media Transformation Services
Related Bugs: 125676
SOLUTION

Symptoms

CTS service crashes if machine has several JRE installed by several DCTM products.

In the std.log under CTS\lib you see this error:

-Djava.class.path=D:\PROGRA~1\DOCUME~1\CTS\lib\cts.jar;D:\PROGRA~1\DOCUME~1\dctm.jar;D:\DOCUME~1\config;D:\PROGRA~1\DOCUME~1\CTS\lib;D:\PROGRA~1\DOCUME~1\java\1.4.2_11\jre\lib\jce.jar;D:\PROGRA~1\DOCUME~1\java\1.4.2_11\jre\lib\jce.jar;D:\PROGRA~1\DOCUME~1\java\1.4.2_11\jre\lib\ext\sunjce_provider.jar
Mon Nov 13 14:49:49 2006 Exception from the java application
java.lang.ExceptionInInitializerError
at javax.crypto.Cipher.a(DashoA12275)
at javax.crypto.Cipher.getInstance(DashoA12275)
at com.documentum.fc.common.impl.PBEUtils.decrypt(PBEUtils.java:97)

Cause

CTS service crashes if machine has several JRE installed by several DCTM products.

Resolution

The workaround is to rollback to the 1.4.2.04 JRE by changing all the paths in the AppParamaters registry key for the CTS service as located HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DocumentumCTS\Parameters

You should still have the 1.4.2.04 JRE under C:\Program Files\Documentum\java\1.4.2_04.

NOTE: Fixed in 5.3 SP4

=========================================================

why CTS.exe crashes ?

The symptoms are that cts.exe crashes with JVM errors. But when you start from startCTS.bat it works. This is very similar to the issue that we have when running CTS on the same machine as the Content Server.

We have seen this issue mostly when WDK application are running with CTS looks like a issue with sharing JVM?s

Here is the resolution.

STEP1: Stop CTS and all dependent services.

STEP2: Open registry by running regedit.

STEP3: Navigate to ?HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DocumentumCTS\Parameters?

STEP4: Open AppParameters by Double-clicking.

STEP5: Copy and back up the current Value.

STEP6: Modify the values to include the following


-Djava.ext.dirs=C:\PROGRA~1\DOCUME~1\java\1.4.2_04\jre\lib


and make sure following jars are at the end of -Djava.class.path

C:\PROGRA~1\DOCUME~1\java\1.4.2_04\jre\lib\jce.jar;C:\PROGRA~1\DOCUME~1\java\1.4.2_04\jre\lib\ext\sunjce_provider.jar


Here is a sample from working environment.


-Xbootclasspath

?.

-DMAX_WAIT_INTERVALS=5

?Djava.ext.dirs=C:\PROGRA~1\DOCUME~1\java\1.4.2_04\jre\lib

-Djava.class.path=C:\PROGRA~1\DOCUME~1\CTS\lib\cts.jar;C:\PROGRA~1\DOCUME~1\dctm.jar;C:\DOCUME~2\config;C:\PROGRA~1\DOCUME~1\CTS\lib;C:\PROGRA~1\DOCUME~1\java\1.4.2_04\jre\lib\jce.jar;C:\PROGRA~1\DOCUME~1\java\1.4.2_04\jre\lib\ext\sunjce_provider.jar

??.


STEP7: Save the value.

STEP8 Start the CTS service.

How can I change the log level in CTS?

How can I change the log level in CTS?
ID: esg44235
Product(s): Document Transformation Services, Media Transformation Services
SOLUTION
By default CTS is set to INFO Level in order to improve the performance.
Please refer to support note 25327 for different levels of logging.
Steps to change the log level:
1. Stop all of the CTS services.
2. Go to log4j.properties file under following folder [DFC HOME]\config which is generally C:\documentum\config
3. To get debug information for CTS framework, update the following CTS appenders to DEBUG from INFO:
FROM:

log4j.category.com.documentum.cts.services=INFO, CTSServicesAppender

log4j.category.com.documentum.impl=INFO, CTSServicesAppender

log4j.category.com.documentum.cts.util=INFO, CTSServicesAppender

log4j.category.com.documentum.cts.util.CTSInstanceInfoUtils=INFO, CTSInstanceInfoAppender

TO:

log4j.category.com.documentum.cts.services=DEBUG, CTSServicesAppender

log4j.category.com.documentum.impl= DEBUG, CTSServicesAppender
log4j.category.com.documentum.cts.util=DEBUG, CTSServicesAppender
log4j.category.com.documentum.cts.util.CTSInstanceInfoUtils=DEBUG, CTSInstanceInfoAppender

4. To troubleshoot Plug-in specific issues you will need to add DEBUG to the plugin appender that you would like to trace. Each Plug-In has their own appender so you will need to set this for each one that you are troubleshooting.
Here are some example plug-ins and their coresponding appenders.

ALTERCAST (MTS)

log4j.category.com.documentum.mp.altercast= DEBUG, AltercastAppender

IMAGE1

log4j.category.com.documentum.cts.plugin.irw=DEBUG, IMAGE1Appender

PDF (DTS5.3 SP4 and abobe)

log4j.category.com.documentum.cts.plugin.advancedpdf=DEBUG, PDFAPPENDER

ADVANCED PDF (RPTS)

log4j.category.com.documentum.cts.plugin.advancedpdf=DEBUG, AdvancedPDFAppender

ACROBAT (DTS 5.3 -5.3 SP2)

log4j.category.com.documentum.cts.plugin.acrobat=INFO, ACROBATAppender

WORD (DTS 5.3)

log4j.category.com.documentum.cts.plugin.word=DEBUG, WORDAppender

PDF Generator (DTS 5.3 SP3 and DTS Legacy)

log4j.category.com.documentum.cts.plugin.pdfgen=DEBUG, PDFGenAppender

AAES (ADTS)

log4j.category.com.documentum.cts.plugin.aaes=DEBUG, AAESAppender

5. By switching on separate logging in log4j.properties file by setting "separatelogging" to true, CTS will create a separate log file per repository. This is only needed for a multiple repository configuration.

com.documentum.separatelogging.enabled=true.

6. Start the CTS service.

The logs will now have a higher degree of verbosity which will assist in troubleshooting.

7. Logs will be created in two places.

a. \logs - This is the default location for logs. If seperate logging is enabled, only non- repository specific information will go here. Like plug-ins loading.

b. \docbases\\config\logs - If seperate logging is enabled, docbase specific logging will be placed here.

NOTE: Log4j is a open source framework for controlling logging. It is a mechansim for controlling verbosity, logging file creation, and log output format. Please refer to the following support note for more information:

http://solutions.emc.com/nsepn/webapps/stqv768481dmts46655278/emcsolutionview.asp"id=esg77976

Enable Trace

Tracing can be enabled using the dmcl32.dll through the dmcl.ini file by including some trace statements in the DMAPI_CONFIGURATION section.

There are two keywords used: trace_file and trace_level.

The trace_file keyword can be specified as either a file name or a directory name. If you specify a directory name, then a trace file will be generated automatically. The name will appear like dmcl_trace_2658878. The seven digits will be generated as unique numbers. These trace files will be created each time a client application is used that initializes the dmcl32.dll.

The trace_level keyword sets the level of trace information put into the trace file. Trace levels are:

0 = Informational messages (Note: no trace will be created on Desktop Client if set to "0")

1 = Trace messages

2 = Warning messages

3 = Error messages

4 = Fatal error messages

10 = Timing information

11 = Load operation information


For more information on the Trace API Server method, please refer to the Documentum Server Reference Manual.

Below is an example of a dmcl.ini file used by a Windows 95 client running WorkSpace 3.1.

#Default DMCL.INI. Refer to DMCLFULL.INI for other options

# Assuming No Network File System

# Assuming No Compression for Content Tunneling

[DOCBROKER_PRIMARY]

host = barracuda
port = 1489
#host = shark

[DMAPI_CONFIGURATION]

cache_query = F
trace_file = c:\tracefiles
trace_level = 3

Example:

[DOCBROKER_PRIMARY]

host =10.47.101.119
port =1489

[DOCBROKER_BACKUP]

host =10.47.101.120
port =1489

[DMAPI_CONFIGURATION]
cache_queries = T
token_storage_enabled=F
token_storage_path=D:\Documentum\apptoken
secure_connect_default=try_native_first
client_codepage=UTF-8
client_os_codepage=UTF-8
max_session_count=1000
connect_pooling_enabled=T
cache_query =F
trace_file=c:\trace.log
trace_level=10

Register a table

1) Create a table in the database
2) Register using DA

For E.g:

DQL> REGISTER TABLE dm_dbo.MLTC_BUSINESS_DOC_TYPE_WEB(BDT_ID INT, BDT_NAME CHAR(255), BDT_DESCRIPTION CHAR(255), CLASS_NAME CHAR(64), HIGHEST_LEVEL_FOLDER CHAR(255), LOWEST_LEVEL_FOLDER CHAR(255));

new_object_ID
=============

190049e0803f9
(1 rows affected)

Update reg table values.

DQL> update dm_registered objects set group_permit= 15 where r_object_id = '190049e0803f96d0';

objects_updated
===============

1
(1 rows affected)
DQL> update dm_registered objects set world_permit= 7 where r_object_id = '190049e0803f96d0';

objects_updated
===============

1
(1 rows affected)
DQL> update dm_registered objects set owner_table_permit= 7 where r_object_id = '190049e0803f96d0';

objects_updated
===============

use this DQL to grant proper permission to your table
update dm_registered object
set owner_table_permit = 15,
set group_table_permit = 15,
set world_table_permit = 15
set owner_permit =7,
set group_permit =5,
set world_permit=3
where object_name = 'AddressBook'
go

This should give proper permission to your registered table. if you want you can change the table_permit from 15 to whatever u like.

To get the install owner name. use this DQL, sometimes its handy.

select user_name from dm_user where user_name = 'dm_dbo'

ERROR: Failed when creating new document/object

Issue:
ERROR: Failed when creating new document/object.
Error copying template while performing new object operation:Cannot make copy of the document 'Blank Word 97 / 2000 Document'

Solution:
check the permissions and give atleast write permissions!
check the permissions in the data directory ie to the specific path

verify the /Templates cabinet, these templates are there and the owner(dmdmin) has delete permissions on these templates

Error seen from DMCL trace:

[DM_CONTENT_E_LOCK_REQUEST]error: "Error requesting file lock on filename (e:\dctm\Dmcl\00013424\testdocbase\dir.lck) in order to lock the Session Temporary Content Directory for use on the first Getfile request. Lock_wait 1. Operating System error was ( errno: 13, message: Permission denied)."; ERRORCODE: 100; NEXT: null:

This error is cause by a permissions issue.

The user creating the lock file does not have permission to the DMCL cache location.

please check permission to the full path listed.

In the error above it would be e:\dctm\Dmcl\00013424\testdocbase\

Your path will differ from the error listed above.

DAB - There is no unicode font found on the system

Issue :
IN DAB, when am trying to double click.. am getting below error and unable to edit
Workflow Manager: There is no unicode font found on the system
Unicode data may not be displayed correctly

Solution:
Install the universal font for Unicode
Arial Unicode MS font is a full Unicode font. It contains all of the characters, ideographs, and symbols defined in the Unicode 2.1 standard. It is contained on the Microsoft Office Installation Disk and is not installed by default.
Installing the Unicode Font In Microsoft Windows 2000, XP or Millennium Edition

1) Quit all programs.

2) In Control Panel, double-click the Add/Remove Programs icon.

3) Do one of the following:
a) If you installed your Microsoft Office program as part of an Office package, click Microsoft Office in the Currently installed programs box, and then click Change.
b) If you installed your Office program individually, click the name of your program in the Currently installed programs box, and then click Change.

4) In the Microsoft Office Setup dialog box, click Add or Remove Features, and then click Next.

5) Next to Office Shared Features, click the plus sign (+).

6) Next to International Support, click the plus sign (+).

7) Click the icon next to Universal Font, and then select the installation option you want.


Installing the Unicode Font In Microsoft Windows 98 or Windows NT 4.0

1) Quit all programs.

2) In Control Panel, double-click the Add/Remove Programs icon.

3) Do one of the following:
a) If you installed your Microsoft Office program as part of an Office package, click Microsoft Office on the Install/Uninstall tab, and then click Add/Remove.
b) If you installed your Office program individually, click the name of your program on the Install/Uninstall tab, and then click Add/Remove.

4) In the Microsoft Office Setup dialog box, click Add or Remove Features, and then click Next.

5) Next to Office Shared Features, click the plus sign (+).

6) Next to International Support, click the plus sign (+).

7) Click the icon next to Universal Font, and then select the installation option you want.

Note: Because of its considerable size and the typographic compromises required to make such a font, Arial Unicode MS should be used only when you can't use multiple fonts tuned for different writing systems. For example, if you have multilingual data from many different writing systems in Microsoft Access, you can use Arial Unicode MS as the font to display the data tables, because Access can't accept many different fonts.

Thursday, August 21, 2008

7 Documentum Jobs

Job Description
1. DMClean The DMClean job removes deleted and orphaned objects from the
Docbase.
2. DMFilescan The DMFileScan job removes deleted and orphaned content files from
the file system.
3. LogPurge The Log Purge job removes server and session logs from the Docbase
and file system.
4. ConsistencyChecker The Consistency Checker job runs 77 referential integrity checks on
the Docbase.
5 UpdateStats The Update Stats job updates database table statistics and repairs
fragmented tables
6. QueueMgt The QueueMgt job deletes dequeued Inbox items from the Docbase.
7. StateOfDocbase The State of the Docbase job produces a report of the repository
environment and statistics about object types.

Difference between Simple and Advanced Search

In Webtop the DQL issued by Simple Search and the DQL issued by Advanced Search are different. For example in Simple Search, if I search for a document called "always on" and enter this as such, the simple search text box the following DQL is issued:

SELECT ALL r_object_type,r_modify_date,r_object_id,r_lock_owner,i_vstamp,owner_name,r_version_label,i_is_reference,score,a_content_type,object_name,r_is_virtual_doc,r_link_cnt,r_content_size FROM dm_document SEARCH TOPIC ' ("*always*","*on*")'


For the Advanced search, if I carry out the same search the following DQL is issued:

SELECT ALL r_object_type,r_lock_owner,r_object_id,owner_name,i_is_reference,a_content_type,object_name,r_is_virtual_doc,r_link_cnt,lower(object_name) AS lowerobjname,r_content_size,r_version_label,r_modify_date FROM dm_document WHERE FOLDER('/Your Folder',DESCEND) AND lower(object_name) = lower('always on') ORDER BY 10 ASC,3 ASC


The differences in the two searches is as designed. Simple search matches the words searched against indexed text and properties such as, Filename, Descriptive name, Category and Author. Spaces or commas can be used to separate text / keywords and Webtop will search for all separated chunks of text using Verity queries, such as AND or OR. For more information regarding Simple Search, please refer to the "Using a Simple Search" section of the Webtop 5.2x User Guide.

In our example, a client searching for "always on" would be considered to be searching for keywords "always" AND "on". This is a non-issue with Advanced Search as it is a less ambiguous search.


Another example:
If I have a document called "NEW Vacation Request Form.doc" in my home cabinet. I may carry out the following searches:
1) Search for "NEW Vacation Request Form.doc" --> returns the document (full object_name)
- SEARCH TOPIC ' ("*NEW Vacation Request Form.doc*")'

2) Search for "NEW Vacation Request Form" --> returns the document (partial object_name)
- SEARCH TOPIC ' ("*NEW Vacation Request Form*")'

3) Search for NEW Vacation Request Form --> did not return as we know
- SEARCH TOPIC ' ("*NEW*","*Vacation*","*Request*","*Form*")'

ACCRUE selects documents that include at least one of the search elements you specify. The more search elements that are present, the higher the score will be. e.g. (computer, laptop). As you can see, ACCRUE is used to search content not object_name.

The workaround suggested is to enclose double quotes around the words in simple search.

Remove select Object from DocApp/Type

“Remove select Object from DocApp/Type” removes object from the docapp not from docbase, if you want to remove objects from docbase the in DAB, checkout docapp

Select the object, Go to Menu item Edit  Delete object(s) from Docbase.

Or

TBO objects reside in the docbase in the location "/System/Modules/TBO" with the object type "dmc_module". You can uninstall the TBO’s by destroying your custom TBO objects from docbase.

select r_object_id, r_object_type from dm_sysobject where folder('/System/Modules/TBO');

User is getting UCF_E_SPECIFY_APPLICATION: A valid application does not exist

symptoms

User is getting UCF_E_SPECIFY_APPLICATION: A valid application does not exist. when try to view or edit specific file even application exist on the machine.
Cause
No Registry entries to edit and view with the specific extension.

Resolution
The Win32 Native Library used by UCF to identity and launch applications on the client relies on entries in the Windows Registry to discover file-type/application associations. The sequence for identifying which application to use for a given type is as follows:
• Look for entries in HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts matching the type
• For each sub-key found, the program identifier and name are recorded (i.e. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.asp\OpenWithProgids\aspfile)
• For each of the sub-keys, the program identifier is search for in HKEY_CLASSES_ROOT (i.e. HKEY_CLASSES_ROOT\aspfile)
• If there is a shell sub-key, then the 'shell\open\command' and 'shell\edit\command' values are used for launching the application. If only one is available, then it will be used for viewing and editing.
For an example of a key that works, check HKEY_CLASSES_ROOT\Excel.Sheet.8\shell\Open\command.
So, immediate solution user can choose viewer/editor in WDK Client Application, or to provide sub-keys in the Windows registry HKEY_CLASSES_ROOT\aspfile entry to indicate the shell/open/command and shell/edit/command values.

How do Acls work on folders

This has nothing to do with folder security, which is a different topic altogether.

A permission set, or ACL, on a folder, controls whether that folder is displayed in the Desktop and Intranet clients. It has nothing to do with whether a user can make changes to the documents within the folder. This is determined by the ACLs assigned to each document. Folders are visible to all users with BROWSE permission. A user with NONE cannot see a folder from their client. A folder does not protect documents inside. Users with access to those documents can still search for, find, and change those documents

Groups Vs Roles

Introduction

Whether you're a developer new to the Web Development Kit (WDK) or you're a system administrator trying to be efficient in your Documentum user management, you may have wondered why there are both groups and roles. This article explores the differences between them, and provides some guidance on how to decide when to use a group or a role.

In the Beginning, there were Groups

Groups are a convenient way of aggregating individual users, thereby simplifying the process of managing permissions. Specifically, groups can be used in the following ways:

In conjunction with an Access Control List (ACL) to assign object-level permissions to all members of the group

As the owner of a document to allow all members of the group to have ownership

As the performer of a workflow task to allow that task to be delivered to all members of the group (or optionally the first to receive it)

The Content Server Fundamentals manual provides the following example of using groups to control permissions: you might set up a group called engr and assign version permission to the engr group in an ACL applied to all engineering documents. All members of the engr group then have version permission on engineering documents.

Groups contain the following properties:

Name: the name of the Docbase group

Class: the type of group (added in Content Server 5 - more on this later)

Email address: the address for the group. If no value is entered, the group email address defaults to the group name.

Owner: the name of the Docbase owner who owns this group (most groups are owned by the Docbase owner, but normal users can have their own groups as well, although this feature is rarely used)

Administrator: specifies a user or group, in addition to a superuser and the group owner, who can modify the group (this allows a manager to maintain group membership without having system administration privileges to the rest of the system)

Alias set: the default alias set for the group (used in certain cases to resolve an Alias Set's scope)

Group is Global: indicates that the group is displayed only in the governing Docbase of a federation

Description: a user-friendly description of the group

Is Private: defines whether the group is private or public. Public groups are visible to all users, while a private group is visible only to the owner of the group.

And to make your user management even more flexible, a group can belong to another group, facilitating a hierarchical user structure within which individual users and groups can be combined in the same group.

Along Came Roles

The release of Content Server 5 ushered in the era of roles. A role is a special type of group. Prior to roles, there was only one type of group, now called a standard group. This type of group is used to assign object-level permissions and participation in workflows as described above.

Version 5 added two new types of groups, a role group and a domain group:

Role group: this type of group is assigned a particular role within a client application domain. As with standard groups, a role group may contain a set of users, other groups, or both. A role group is created by setting the group_class attribute to role and the group_name attribute to the role name.

Domain group: this represents a particular client domain. A domain group contains a set of role groups, corresponding to the roles recognized by the client application. Note that if you create a role as a domain, it is listed in the Groups list page, not the Roles list page.

Since a role is a specialized group, roles contain the same nine properties as groups, with restrictions on two of the properties (name and class) as discussed above.

Summary of the Differences

We've been focusing on the fact that roles are just a special type of group. So let's summarize by highlighting the differences:

Groups are used for object permissions; roles are used for application or function permissions.

Again we turn to the Content Server Fundamentals manual for an example of using roles and domains to control function permissions. Suppose you write a client application called report_generator that recognizes three roles: readers (users who read reports), writers (users who write and generate reports), and administrators (users who administer the application). To support the roles, you create three role groups, one for each role. The group_class is set to role for these groups, and the group names are the names of the roles: readers, writers, and administrators. Then, create a domain group by creating a group whose group_class is domain and whose group name is the name of the domain. In this case, the domain name is report_generator. The three role groups are the members of the report_generator domain group.

When a user starts the report_generator application, the application is responsible for examining its associated domain group and determining the role group to which the user belongs. The application is also responsible for ensuring that the user performs only the actions allowed for members of that role group. Content Server does not enforce client application roles, since this responsibility is delegated to the application via the domain group.

Once the roles exist in your Docbase, they can be reused across applications. Just create a new domain group and add any of the existing role groups (readers, writers, and administrators in the example above) to the new domain group.

Roles in Web Publisher

Web Publisher is already configured with the roles that are defined in the Web Publisher doc app:

wcm_content_author_role

wcm_content_manager_role

wcm_web_developer_role

wcm_administrator_role

Web publisher uses these roles to determine which features are available to the user. For example, content authors are not allowed to see cabinets and folders, while content managers can. Content managers are not allowed to access administrative features, while administrators can. These out-of-the-box roles are ready to be used within any Web Publisher application, and they can be extended if needed. Plus, you can create new roles as needed.

Roles in WebTop

Webtop and WDK components can be configured to use any role that is defined in the associated Docbase. If no roles are configured in the Docbase, or if the Docbase is pre-5.1, Webtop defaults to using the client capability model in which four client capability levels can be set as client_capability attributes on the dm_user object in the Docbase:

consumer

contributor

coordinator

administrator

If you create role groups in the Docbase, you can create roles named consumer, contributor, coordinator, and administrator. Your custom roles can contain these roles (or vice-versa), so that Webtop and WDK components will not need to be reconfigured for your custom roles.

What can cause the error: "DM_DOCBROKER_E_CONNECT_FAILED"?

ID: esg5033
SOLUTION

You may get the following errors when trying to log into the Docbase even though the Docbase is up, but no client can connect to it. IAPI on the Server machine can also give the following errors:

[DM_DOCBROKER_E_NETWORK_ERROR]error: "An error occured performing a network operation: (Unknown error code 112 (_nl_error_ = 10061)). Network specific error: (Winsock error: connection refused; server probably not running)."

[DM_DOCBROKER_E_CONNECT_FAILED]error: "Unable to connect to DocBroker. Please check your dmcl.ini file for a correct host. Network address: (INET_ADDR: family: 2, port: 1489, host: 199.82.105.56 (199.82.105.56, c7526938))."

[DM_DOCBROKER_E_REQUEST_FAILED_E]error: "The Docbroker request failed."

The customer with the problem has the following environment:

1. Docpage server is on a Solaris box.

2. No DNS service used.

3. The server.ini file indicates that the server projects to machine named 'ods_dms'

4. Client connects from an NT machine and uses the server machine's IP address instead of the hostname in its dmcl.ini file:

[DOCBROKER_PRIMARY]

host = 199.82.105.56 (tried both specifying the IP address or hostname but both

failed with the same errors)

5. From the client machine, telnet and ping using the server machine's IP address 199.82.105.56 both succeed.

Upon running 'dmqdocbroker -i' on the server machine and obtaining the docbase map, the following was output :

Docbroker network address : INET_ADDR: 02 5d1 ac10490a ods_dms 127.0.0.1

where ods_dms is the host machine name.

Checking the /etc/hosts file, the customer only has 1 entry:

127.0.0.1 localhost

RESOLUTION:

1. Add a second entry to the /etc/hosts file for the actual IP address of the host machine since 127.0.0.1 is only the local loop back address. In this case the new entry looks like:

199.82.105.56 ods_dms loghost

The above entry should exist by default if the OS had been set up properly. But in this case, we suspect the OS had not been properly set up causing the second entry to be missing.

2. Kill the docbase server process with Unix kill -9. Shutting down using the standard dm_shutdown_ods_dms script fails because IAPI cannot connect to the docbase at all.

3. Run dm_stop_docbroker to shutdown the docbroker process

4. Run dm_launch_docbroker to bring up the docbroker

5. Run dmqdocbroker to verify that the docbroker picks up the correct entry from the /etc/hosts file. The correct output looks like:

Docbroker network address : INET_ADDR: 02 5d1 ac10490a ods_dms 199.82.105.56

6. Run dm_start_ods_dms to start up the docbase.

Now all client connections succeed, because the docbroker's docbase map contains the correct network address.

How do I correct the errors and warnings reported by this consistency checker?

ID: esg29545
Related Bugs:
SOLUTION

More specifically the question is what is the impact of the following errors that still exist and how do we clean them up?

Here are the steps to clean them up:

NOTE: PLEASE ENSURE THAT YOU HAVE A DATABASE BACKUP WHICH YOU CAN USE TO RECOVER THE SYSTEM IN THE UNLIKELY EVENT OF A CORRUPTION

You must log on to the database as docbase owner and run the SQL queries;

--- QUERY---: select a.r_object_id as p1, a.i_chronicle_id as p2 from dm_sysobject_s a where a.i_chronicle_id <> '0000000000000000' and not exists (select * from dm_sysobject_s b where b.r_object_id = a.i_chronicle_id)

WARNING CC-0023: Sysobject with r_object_id '09006e7880082141' references a non-existent i_chronicle_id '09006e788008211f'

WARNING CC-0023: Sysobject with r_object_id '09006e788008214b' references a non-existent i_chronicle_id '09006e788008211f'

Problem:

For some reason the root version doesn't exist anymore. Normally, WE CAN delete this object because it does not have a root document

Steps:

- Need to get the dump of the objects and check which version are those and check the all tree

- Need to change in SQL the i_chronicle_id to the lower version and make it the root


In SQL

SQL> update dm_sysobject_s set i_chronicle_id='< who ever is the lower version>' where i_chronicle_id='09006e788008211f';

SQL> commit;
OR

SQL>delete from dm_sysobject_r where r_object_id ='09006e7880082141'

SQL>delete from dm_sysobject_s where r_object_id ='09006e7880082141'

--- QUERY---: select a.r_object_id as p1, a.i_antecedent_id as p2 from dm_sysobject_s a where a.i_antecedent_id <> '0000000000000000' and not exists (select * from dm_sysobject_s b where b.r_object_id = a.i_antecedent_id)

WARNING CC-0024: Sysobject with r_object_id '09006e7880082141' references a non-existent i_antecedent_id '09006e788008211f'

Problem:

In this particular case the i_chronicle_id which is the i_antecedent_id is gone, OR WILL BE DELETED FROM THE STEP ABOVE.

Steps:

- Need to update i_antecedent_id to 16 zeros


SQL> update dm_sysobject_s set i_antecedent_id='0000000000000000' where i_antecedent_id='09006e788008211f';

SQL> commit;

--- QUERY---: select a.r_object_id as p1, a.r_workflow_id as p2 from dmi_workitem_s a where not exists (select b.r_object_id from dm_workflow_s b where b.r_object_id = a.r_workflow_id)

WARNING CC-0043: dmi_workitem object with r_object_id '4a006e7880000119' references non-existent dm_workflow object with id '4d006e788000010c'

WARNING CC-0043: dmi_workitem object with r_object_id '4a006e788000011e' references non-existent dm_workflow object with id '4d006e788000010e'


Problem:


The workitem is pointing to a non-existing workflow instance probable related to a bug.


Steps:


- Dump the dmi_workitem object and set to 16 zeros the r_workflow_id

- Get the r_queue_item_id value and set the item_id to 16 zeros and delete_flag to true as solution of Warning CC-0042

- dm_QueueMgt will cleanup the queue_item and destroy the dmi_workitem object


Workitem:

API> fetch,c,4a006e7880000119


API> set,c,4a006e7880000119,r_workflow_id

SET> 0000000000000000


API> save,c,4a006e7880000119


Queue_item


API> fetch,c,1b006e788001d911


API> set,c,1b006e788001d911,item_id

SET> 0000000000000000


API> set,c,1b006e788001d911,delete_flag

SET> 1


API> save,c,1b006e788001d911


Workitem:


API> fetch,c,4a006e7880000119


API> destroy,c,4a006e7880000119



--- QUERY---: select a.r_object_id as p1, a.r_workflow_id as p2 from dmi_package_s a where not exists (select b.r_object_id from dm_workflow_s b where b.r_object_id = a.r_workflow_id)

WARNING CC-0045: dmi_package object with r_object_id '49006e7880000116' references non-existent dm_workflow object with id '4d006e788000010c'

WARNING CC-0045: dmi_package object with r_object_id '49006e7880000118' references non-existent dm_workflow object with id '4d006e788000010e'


Problem:


dmi_package is pointing to a non-existing workflow


Steps:


- Set the r_workflow_id to 16 zeros

- Destroy the dmi_package object


API> fetch,c,49006e7880000116


API> set,c,49006e7880000116,r_workflow_id

SET> 0000000000000000


API> save,c,49006e7880000116


API> fetch,c,49006e7880000116


API> destroy,c,49006e7880000116



--- QUERY---: select ws.r_object_id as p1, pr.r_component_id as p2 from dm_workflow_s ws, dm_workflow_r wr, dmi_package_s ps, dmi_package_r pr where ws.r_object_id = wr.r_object_id AND wr.r_act_state != 2 AND pr.r_component_id > '0000000000000000' AND ws.r_runtime_state IN (1,3) AND ws.r_object_id = ps.r_workflow_id AND wr.r_act_seqno = ps.r_act_seqno AND ps.r_object_id = pr.r_object_id AND not exists (select a.r_object_id from dm_sysobject_s a where a.r_object_id = pr.r_component_id)

WARNING CC-0046: dm_workflow object with r_object_id '4d006e7880002501' references non-existent sysobject with r_component_id '09006e788000dffd'

WARNING CC-0046: dm_workflow object with r_object_id '4d006e7880000d09' references non-existent sysobject with r_component_id '09006e7880006e60'


Problem:


The r_component_id of the dmi_package and is making reference to a workflow instance doesn't exist anymore


Steps:


- Set the r_component_id and r_component_chron_id (Chronicle ID of the object identified at the corresponding index position in r_component_id.) to 16 zeros and destroy it.

- Or set r_component_id to a existing package with his chronicle_id in r_component_chron_id


API> retrieve,c,dmi_package where r_workflow_id='4d006e7880002501'

...

4d0a636280000900

API> set,c,490a636280000900,r_component_id

Set >0000000000000000

...

Ok

API> set,c,490a636280000900,r_component_chron_id

Set >0000000000000000

...

Ok

API> save,c,490a636280000900

...

Ok



OR



API> set,c,490a636280000900,r_component_id

Set >090a636280004c85

...

Ok

API> set,c,490a636280000900,r_component_chron_id

Set >090a636280004655

...

Ok

API> save,c,490a636280000900

...

Ok



Check ACLs with non-existent users

WARNING CC-0007: ACL object with r_object_id '45006e5880000507' has a non-existent user 'test1'

WARNING CC-0007: ACL object with r_object_id '45006e5880000d00' has a non-existent user 'test1'


Problem:


The ACL contains a non-existing user in r_accessor_name attribute


Steps:


- Dump the acl

- Check the index for the non-existing user

- Using remove API call, remove the user per index and also make sure that you remove the same index for r_accessor_permit, r_accessor_xpermit and r_is_group attributes. If CS is 4.2.x this will not have r_accessor_xpermit


In API:


API> fetch,c,450a636280002512

...

Ok

API> dump,c,450a636280002512

...

USER ATTRIBUTES


object_name : peoplesoft_acl

description : peoplesoft permission set

owner_name : Miguel_Test52

globally_managed : F

acl_class : 0


SYSTEM ATTRIBUTES


r_object_id : 450a636280002512

r_is_internal : F

r_accessor_name [0]: dm_world

[1]: dm_owner

[2]: dmadmin

[3]: test1

r_accessor_permit [0]: 3

[1]: 7

[2]: 7

[3]: 7

r_accessor_xpermit [0]: 0

[1]: 0

[2]: 3

[3]: 3

r_is_group [0]: F

[1]: F

[2]: F

[3]: F

r_has_events : F


APPLICATION ATTRIBUTES



INTERNAL ATTRIBUTES


i_is_replica : F

i_vstamp : 1


In this case the index 3 contains the user that we need to remove (test1)


API> remove,c,450a636280002512,r_accessor_name[3]

...

Ok

API> remove,c,450a636280002512,r_accessor_permit[3]

...

Ok

API> remove,c,450a636280002512,r_accessor_xpermit[3]

...

Ok

API> remove,c,450a636280002512,r_is_group[3]

...

Ok

API> save,c,450a636280002512

...

Ok

API> dump,c,450a636280002512

...

USER ATTRIBUTES


object_name : peoplesoft_acl

description : peoplesoft permission set

owner_name : Miguel_Test52

globally_managed : F

acl_class : 0


SYSTEM ATTRIBUTES


r_object_id : 450a636280002512

r_is_internal : F

r_accessor_name [0]: dm_world

[1]: dm_owner

[2]: dmadmin

r_accessor_permit [0]: 3

[1]: 7

[2]: 7

r_accessor_xpermit [0]: 0

[1]: 0

[2]: 3

r_is_group [0]: F

[1]: F

[2]: F

r_has_events : F


APPLICATION ATTRIBUTES



INTERNAL ATTRIBUTES


i_is_replica : F

i_vstamp : 2


API



WARNING CC-0059: The dm_sysobject with id '0900f6ae80002980' references a non-existent policy object with id '46004a1a80003dae'


Need to update the r_policy_id for this object to 0000000000000000


SQL> insert into dm_policy_s values('46004a1a80003dae',2,NULL,'0000000000000000',NULL);


SQL> commit;



--- Query --- select a.name,a.s_index_attr from dm_type_s a where not exists(select b.r_object_id from dmi_index_s b where b.r_object_id=a.s_index_attr)


WARNING CC-0074: Type object for type 'dm_folder' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dm_document' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dm_note' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dmi_dist_comp_record' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dm_query' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dm_script' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dm_smart_list' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'

WARNING CC-0074: Type object for type 'dm_procedure' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'


Problem:


The type is pointing to a non-existing index in dmi_index



This is a harmless warning you can ignore. BUG# 65798 is logged on this issue and fixed in Content Server 5.3 OR if you really don't want to see this Warning, you can fix it like this;


EXAMPLE;


WARNING CC-0074: Type object for type 'dm_folder' references a non-existent dmi_index object for _s table with r_object_id '0000000000000000'


Steps:


- Confirm the value of the index by doing the following in SQLplus:


SQL> select S_INDEX_ATTR from dm_type_s where name='dm_folder';


S_INDEX_ATTR

----------------

1f001a9880000142


- Check the indexes for this type:


SQL> col index_name format a20

SQL> col column_name format a20

SQL> col column_position format 99999999990

SQL> select index_name,column_name,column_position from user_ind_columns where table_name like 'DM_FOLDER%';


INDEX_NAME COLUMN_NAME COLUMN_POSITION

-------------------- -------------------- ---------------

D_1F001A9880000143 R_OBJECT_ID 1

D_1F001A9880000143 I_POSITION 2

D_1F001A9880000015 R_FOLDER_PATH 1

D_1F001A9880000016 I_ANCESTOR_ID 1

D_1F001A9880000016 R_OBJECT_ID 2

D_1F001A9880000142 R_OBJECT_ID 1


6 rows selected.


SQL>


As you can see the the index name + D_ match with the value of S_INDEX_ATTR last row in the example.


You need to check if this index exists in dmi_index_s and _r


SQL> select count(*) from dmi_index_s where r_object_id='1f001a9880000142';


COUNT(*)

----------

1


SQL> select count(*) from dmi_index_r where r_object_id='1f001a9880000142';


COUNT(*)

----------

1


SQL>


You should not have the object in any of this tables if exists in one of this tables you must delete it.


SQL>delete from dmi_index_s where r_object_id='1f001a9880000142';


SQL>delete from dmi_index_r where r_object_id='1f001a9880000142';


OR


- Set the S_INDEX_ATTR to 16 zeros and then recreate the index using API with unique attribute "R_OBJECT_ID" as is state it above. update S_INDEX_ATTR from dm_type_s to the correct value without the D_ and that will fix the inconsistency