Wednesday, June 19, 2013

Columns should vary based on the folder path in Objeclist component

Root cause analysis:
When there is no column preference id defined in the customization, Webtop uses the default preference id i.e., application.display.classic_cabinets_columns to read and store the preferences. Once the columns are modified(added or removed) they are stored in application.display.classic_cabinets_columns. This is reference from all other folders as well. So the modification is applied to all the folders.

In order to fix the issue, we would recommend you to add the <columnpreferenceid> attribute specifying a unique id in the <component> tag. This can be applied to different folders to have different views. Below is an example:
<config version="1.0">
  <scope location="/System/D2">
    <component id="objectlist" extends="objectlist:webtop/config/objectlist_component.xml">
      <desc>
        Displays a list of objects of type dm_sysobject.
      </desc>
      <columns>
        <column>
          <attribute>object_name</attribute>
          <label>
            <nlsid>MSG_NAME</nlsid>
          </label>
          <visible>true</visible>
        </column>
        <column>
          <attribute>title</attribute>
          <label>
            <nlsid>MSG_ATTR_TITLE</nlsid>
          </label>
          <visible>false</visible>
        </column>
        <column>
          <attribute>authors</attribute>
          <label>
            <nlsid>MSG_AUTHORS</nlsid>
          </label>
          <visible>false</visible>
        </column>
        <column>
          <attribute>owner_name</attribute>
          <label>
            <nlsid>MSG_OWNER_NAME</nlsid>
          </label>
          <visible>false</visible>
        </column>
      </columns>
      <columnpreferenceid>application.display.objectlist_columns_d2</columnpreferenceid>
    </component>
  </scope>
  <scope location="/System/Applications">
    <component id="objectlist" extends="objectlist:webtop/config/objectlist_component.xml">
      <desc>
        Displays a list of objects of type dm_sysobject.
      </desc>
      <columns>
        <column>
          <attribute>object_name</attribute>
          <label>
            <nlsid>MSG_NAME</nlsid>
          </label>
          <visible>true</visible>
        </column>
        <column>
          <attribute>title</attribute>
          <label>
            <nlsid>MSG_ATTR_TITLE</nlsid>
          </label>
          <visible>false</visible>
        </column>
        <column>
          <attribute>authors</attribute>
          <label>
            <nlsid>MSG_AUTHORS</nlsid>
          </label>
          <visible>false</visible>
        </column>
        <column>
          <attribute>r_modify_date</attribute>
          <label>
            <nlsid>MSG_MODIFIED_DATE</nlsid>
          </label>
          <visible>true</visible>
        </column>
      </columns>
      <columnpreferenceid>application.display.objectlist_columns_applications</columnpreferenceid>
    </component>
  </scope>
</config>


Sunday, June 16, 2013

Index server Content size for 09xxxxxxxxx id: 06xxxxxxxxxx exceeds limit of 20000000 skipping content

Cause

It appears that the parameter contentSizeLimit of the indexagent.xml configuration file was not taken in consideration in version 5.3 SPx as no warnings were thrown when indexing files larger than 20 MB.

The parameter contentSizeLimit is set to 20000000 by default in index server



<parameter>
<parameter_name>contentSizeLimit</parameter_name>
<parameter_value>20000000</parameter_value>
</parameter>



Resolution

After changing the contentSizeLimit to unlimited (0) files larger than 20 MB will get indexed


<parameter>
<parameter_name>contentSizeLimit</parameter_name>
<parameter_value>0</parameter_value>
</parameter>

file path :  /Xplore1.1/jboss4.3.0/server/DctmServer_Indexagent/deploy/IndexAgent.war/WEB-INF/classes/ indexagent.xml

Thursday, June 13, 2013

Issues while starting Documentum content server

We have found issues while restarting the Documentum Content server or after crash the oracle.


 [DM_SESSION_E_CURSOR_ERROR]error:  "A database error has occurred during the execution of a cursor ('ORA-00376: file 16 cannot be read at this time
ORA-01110: data file 16: '/oradata/oracle/db/11.1.0XXX/index02.dbf'
')."

Solution

it sounds like Oracle data files has been corrupted or crashed so we need recover it and keep it available

SQL > recover datafile 16;
SQL > alter database datafile 16 online

Saturday, June 8, 2013

Remove FAST objects & data after installing xPlore

1. Log on to the FAST index agent host as the user who installed the FAST index agent.
2. Stop the FAST index agent using Documentum administrator or stop the index agent process.
3. Start the FAST Index Agent Configuration Program located in $DOCUMENTUM_SHARED/
IndexAgents (UNIX/Linux) to delete the agent.

(2) You can delete them if you don't plan to test revert to FAST.

(3) dm_fulltext_index object. Using iAPI, retrieve the dm_ftengine_config object. For example:
API>?,c,select r_object_id,object_name from dm_ftengine_config
r_object_id object_name
---------------------------------
080019c880000d17 FAST Fulltext Engine Configuration
API>?,c,delete dm_ftengine_config object where r_object_id = ’080019c880000d17’

You can also delete the following objects:
(4) Unregister the FAST queue user for full-text events. The first iAPI command returns two
queue_user objects. The xPlore user has a port number in the object name, the FAST user does
not. The user is also identified in indexagent.xml in the index agent JBoss instance. The user
name must be within single quotes:
API>?,c,select object_name, queue_user from dm_ftindex_agent_config
API>execsql,c,delete dmi_registry_s where user_name=queue_user

(5) Delete the FAST queue user (dm_fulltext_index_user). Specify the FAST queue_user returned in
the previous step. The user name must be within single quotes:
API>?,c,delete dm_user object where object_name = 'XXX'

(6) Delete the FAST fulltext location object. First get the object ID, for example:
?,c,select r_object_id from dm_location where object_name=’fast’
r_object_id
----------------
3a00031580000154
Delete the object:
API> destroy,c,3a00031580000154


Sunday, June 2, 2013

WDK solutions

WDK SOLUTIONS

Requirement: If the user wants to paste an EDMS document link on a document / email / ERP / Intranet, there is no direct way to just check it on EDMS. Workaround is to click on email as link and then copy the link from the email draft. A shortcut needed to get a document link from EDMS.
Solution: A new wdk component has been created and added to the menu bar (file menu) for copying the DRL of the selected document(s)/folder(s) from EDMS. Below table shows the component definition.

Component

urlcopy_component.xml

Extends

-NA-

Class File

com.XXXXXidiar.menubar.CopyURL

JSP

/XXXXXi-diar/menubar/copyurl.jsp

NLS File

com.XXXXXidiar.edms.menubar.MenuBarNlsProp

Wdk combo container component modified for the copy URL component. Combocontainer jsp will get the URL of the edms application and set it in the client session state and the behavior class will get the URL from client session state and generates the DRL.
ClientSessionState.setAttribute("myurl", myurl);
String myurl = (String)ClientSessionState.getAttribute("myurl");


Component

combocontainer_component.xml

Extends

wdk/config/combocontainer_component.xml

Class File

com.XXXXXidiar.container.MyComboContainer

JSP

/XXXXXi-diar/container/combocontainer.jsp

NLS File

com.XXXXXidiar.edms.menubar.MenuBarNlsProp

Generating DRL for the document/object using the below drl component class.

DRLComponent.constructDRL(docId, null, null, this);


A label created in jsp page for displaying the drls using the below code.
<dmf: label name="abcs" id="abcs" />

Copy URL menu item added to the menu bar component by adding the below code to the menu bar component.
<actionmenuitem dynamic="multiselect" name="file_copy_url" nlsid="MSG_COPY_URL" action="copyurl" hotkeyid="HOTKEY_COPYURL" showifinvalid="true"/>

Component

menubar_component.xml

Extends

webcomponent/config/library/menubar/menubar_component.xml

Class File

com.documentum.webcomponent.library.menubar.MenuBar

JSP

/webcomponent/library/menubar/menubar.jsp

NLS File

com.XXXXXidiar.edms.menubar.MenuBarNlsProp

Hotkeys component modified for adding a hotkey to the copy URL component. Below table shows the hotkeys component definition.

Component

hotkeys.xml

Extends

webcomponent/config/hotkeys.xml

Class File

-NA-

JSP

-NA-

NLS File

com.XXXXXidiar.keyboardshortcut.HotKeysNlsProp

User can select multiple documents/folder for generating DRLs. The generated DRLs will be copied to the windows clipboard automatically. User can simply paste DRLs on email or notepad.

2.       Email as Link
Requirement: When user clicks on email as link, a draft message window opens with link in email body. Subject of the email should be the title of the document and body of email should have the document path, URL and the signature.
Solution: Wdk send locator and send locator container component has been modified to create mail with subject, body and signature automatically. Subject field contains document title.

Component

sendlocator_component.xml

Extends
webcomponent/config/library/sendlocator/
sendlocator_component.xml

Class File

com.XXXXXidiar.sendlocator.CustomSendLocator

JSP

/wdk/blank.htm

NLS File

-NA-

Document DRL created using the below code.
DRLComponent.constructDRL(strObjectId, null, null, this);

Getting title as subject of the email using the below code.

IDfPersistentObject dfObj=getDfSession().getObject(new DfId(getObjectId()));
docName = dfObj.getString("title");

Using the below code we can get the parent folder object id.

String folderId = sysObj.getFolderId(0).getId();


Component

sendlocatorcontainer_component.xml

Extends
webcomponent/config/library/sendlocator/
sendlocatorcontainer_component.xml

Class File

com.XXXXXidiar.sendlocator.SendLocatorContainer

JSP

/XXXXXi-diar/sendlocator/sendlocatorcontainer.jsp

NLS File

-NA-


Getting the login user name from the below code.
SessionManagerHttpBinding.getUsername();

Hidden fields created for storing the email subject and email body.
<dmf:hidden name='<%=SendLocatorContainer.MAILCONTENT%>' id="mailContent"/>
<dmf:hidden name='<%=SendLocatorContainer.MAILSUBJECT%>' id="mailSubject"/>

Below is the script for creating signature by the login user.
var strBody = "Dear User,\n\nPlease find the below documents. \n\n";
var strSignature = "\n\nThanks & Regards,\n" + "<%=strUserName%>,\n"  
                                                    +"EDMS, \nXXXXXidiar.\n”;
var strFormId = "<%=form.getElementName()%>";
var formElement = eval("document." + strFormId);
var strMailBody = formElement.mailContent.value;
var strSub =  formElement.mailSubject.value;

A new email message will be opened using the below url.
var mailtoStr = "mailto:?subject=" + escape (strSub) + "&body=" +
  escape(strBody + strMailBody + strSignature);

window.location = mailtoStr;

3.       Notifications
Requirement: If a user is monitoring a folder, if a new document is created or a new version of existing document is uploaded the system should send an email alert.
Solution: Using the webtop default functionality “Turn on Read Notification” and “Turn on Change Notification” user can apply notifications on folders/documents. User will get the notifications once he applied notifications on documents/folders.
Custom events for Notifications also configured in Webtop by modifying the app.xml file. If the user applied notifications system will register the below events.
<notification>
                  <events>
                      <event>dm_getfile</event>
                      <event>dm_save</event>
                      <event>dm_checkin</event>
                      <event>dm_checkout</event>
                      <event>dm_link</event>
                      <event>dm_destroy</event>
                  </events>
</notification>
Notifications mail format also changed by editing the dm_event_sender.ebs file from content servers.




4.       Check-in as Major Version
Requirement: When user trying to check in a document, system should create a new version. By default system will allow users to check in as same version.  
Solution: We have removed the check in as same version from the check in component by removing the radio button and label from the checkin.jsp page.

Component

checkin_component.xml

Extends
webcomponent/config/library/contenttransfer/checkin/
checkin_component.xml

Class File



JSP

/XXXXXi-diar/checkin/checkin.jsp

NLS File


5.       Sender and Recipient Names are mandatory for Document Type Correspondence
Requirement: While importing a document in to EDMS, if the Document Type is Correspondence, then sender and receiver names should be mandatory.
Solution: wdk import and import container component customized for the document type validation.

Component

import_component.xml

Extends
webcomponent/config/library/contenttransfer/importcontent/
import_component.xml

Class File
com.documentum.webcomponent.library.contenttransfer.importcontent.ImportContent

JSP

/XXXXXi-diar/importcontent/importContent.jsp

NLS File

-NA-

Document type will be validated from the behavior class MyUcfImportContainer from the import container component. If the document type is Correspondence, then sender and recipient names are mandatory.


Component

importcontainer_component.xml

Extends
webcomponent/config/library/contenttransfer/importcontent/
importcontainer_component.xml

Class File

com.XXXXXidiar.importcontent.MyUcfImportContainer

JSP

/XXXXXi-diar/importcontent/importcontainer.jsp

NLS File

-NA-

A label has created for displaying the error message on the import container.
<dmf:label name="mylabel" cssclass="validatorMessageStyle"/>

6.       Simple Search(Full Text) Customization for hiding ERP Supporting Documents
Requirement: EDMS search result should not contain the ERP related documents.
Solution:  Created a new cabinet for ERP Supporting Documents and moved ERP related folder to the new cabinet and excluded simple search from the ERP Supporting Documents folder by customizing webtop search component.
In the custom search component, we have hard coded specific cabinets to perform the search operation. Below is the custom search component configuration.

Component

search60_component.xml

Extends

/webtop/config/search60_component.xml

Class File

com.XXXXXidiar.search.SearchEx

JSP

-NA-

NLS File

-NA-

Specific cabinets have been added to the query builder using the method addLocationScope().
objQBuilder.addLocationScope(strCurrentDocbase, "/XXXXX", true);
objQBuilder.addLocationScope(strCurrentDocbase, "/New Org Structure", true);
objQBuilder.addLocationScope(strCurrentDocbase, "/XXXXX Railways", true);
objQBuilder.addLocationScope(strCurrentDocbase, "/LUSAIL", true);


7.       Update Owner Script
Requirement: Captiva Index operator should be the owner of the document in EDMS.
Solution: A new attribute created for capturing the index operator while indexing in Captiva. Once the indexed document arrives in documentum, the owner of the document will be “dmadmin”. So, we have created script for updating the owner name manually. The script will query the document and retrieve the index_operator from the document properties.
Class: ChangeOwner.java
Properties: _WIN.properties(for windows)
Getting dfc session using the getsession() method.
sess = sMgr.getSession(repository);
Executing a query using the below dfc code.
execQuery(uQry, sess);
8.       Deleting Documents from EDMS
Requirement: If user requests for deleting a documents from EDMS it should be moved to different location but should not be deleted permanently until they expired.
Solution: A new cabinet “Recycle Bin” created for all the deleted folders/documents from EDMS. If a delete request comes from the business user then we will move the document to the Recycle Bin cabinet.
Custom ACL _recycle_bin_acl has been applied on the Recycle Bin to restrict access to the normal users on deleted documents.

9.       Integration with Barcode application
Requirement: GCEO office has a requirement to upload documents in to the EDMS with the barcode. User generates the barcode using recipient name,  departments and the current date. They will stick the printed barcode on the document and upload scanned document in to EDMS. While uploading document in to EDMS, user selects the Barcode field and scan the barcode. It will automatically print the 12 digit code in the barcode field. And user also needs the search option from the EDMS using the 12 digit barcode.
Solution: We have created a new attribute Barcode String (12) for _document to capture the barcode.  Barcode application will get the recipient_names from the edms database using the database link between SQL server and edms database.  DB link created for EDMS registered table _recipient_valuelist to retrieve the recipient_names.

User can search for a document using the 12 digit barcode from EDMS advanced search functionality.