Captiva License Decoder

Nicely done little app to decode those pesky Captiva license files to understand what you really have.  Nice work, Jim and Kevin.

Blog postDirect link.

Updated Documentum Tools and Applications

I had a little free time this week and made some updates to tools and applications I use frequently.  These updates represent ideas sent to me by users or were necessary to address additional situations I encountered in the field.  I hope they are helpful for you too.

QuikDIE v1.5 – This application exports content and metadata from a Documentum repository based upon a query.  Content is exported in its native format, and metadata is exported as XML.  Updates include:

  • detects and eliminates content “parked” on BOCS server
  • “dmi_” object types are ignored
  • implemented DCTMBasics JAR

For additional information regarding QuikDIE (including important info in the comments section), search for “QuikDIE“.

DeepExport v1.1 – This application exports CONTENT ONLY from a folder in a Documentum repository.  Content is exported in its native format and the folder hierarchy in the repository is replicated on the export drive.  Updates include:

  • detects and eliminates objects parked on BOCS server
  • updated to use DCTMBasics v1.3
  • refactored to remove Utils class
  • added password encryption/decryption

For additional information regarding DeepExport, search for “DeepExport“.

DCTMBasics v1.3 – This JAR file contains a set of helpful methods for interfacing with Documentum via the DFC.  It contains implementations of methods discussed in “The Basics” series.  Updates include:

  • getDFCVersion() – returns DFC version of your client
  • checkDFCVersion() – compare the current DFC version with a minimum version
  • createDocbasePath() – create a folder hierarchy in the repository
  • encryptPassword() – encrypt a password using the RegistryPasswordUtils class (used to encrypt dm_bof_registry user)
  • decryptPassword() – decrypt a password encrypted with the encrypt() method
  • runDQLQueryReturnSingleValue() – run a query that returns a single value, for example:  select count(*) from …
  • isSysObject() – tests it an IDfPersistentObject is a sys_object or not
  • createLogFile() – create a log file and return it to the caller as a PrintWriter
  • other misc updates, changes, corrections, and refactoring

For additional information regarding “The Basics” series, search for “The Basics“.




Documentum Bulk Export Tool v1.4

I just updated the Documentum bulk export tool, QuikDIE, to version 1.4.  You can download it here.  More info about the tool can be found in  previous posts here and here.  Be sure to read the comments.

Updates in this version include:

  • Compiled using Java 1.7
  • updated JDOM library to 2.0.
  • check for supported DFC version (only 6.5 and later)
  • export a_antecedent_id so version tree can be reconstructed
  • updated batch file to use dctm.jar (Hopefully this will eliminate the java.lang.NoClassDefFoundError: org/apache/commons/lang/StringEscapeUtils error some have reported.  This class is found in the commons-lang-2.4.jar.)

Check it out and let me know what you think.




Managing All Those Environment URLs

A few years ago I started a project with a new customer. When I was granted access to their DEV, QA, and PROD environments I was given a bookmark file that contained all of the URLs I would need to manage and administer their systems (for example: DA, Webtop, and various D2 applications).  Generally, these URLs are not too hard to remember, but there are subtle differences in their construction across the three environments (e.g., port numbers and host names).  This list also contained some not-so-easy to remember URLs like the xPlore Index Agent and the DFS WSDL location.  I was impressed; this simple bookmark file saved me a lot of time not having to compile it myself.  But I wanted more….

This bookmark file saved me time when I needed access to a web application, but it didn’t help with ssh, scp, or rdp access to the servers.  For those protocols I needed to use putty, WinSCP, and mstsc (Remote Desktop Connection) respectively, which meant I had essentially four lists of host names\URLs per environment — that’s 12 lists with over a hundred hosts\URLS!  I’m sure there are dozens of solutions to this problem — some probably even contain password management, but here is my simple, bare-bones solution to this problem, in an environment where I had limited Desktop control.

I created a simple Word document (see Image 1) that contained tables with all the application URLs and host names I needed access to.  I then saved this document as a ‘Web Page, Filtered’ HTML document to my Desktop.  I opened the HTML file in my browser, and made it my default homepage (see Image 2).  Now I have instant access to these URLs and hosts from either the browser or the Desktop.

Creating URLs for the web applications (e.g., Webtop, DA) was simple.  Creating links for the ssh, scp, and rdp host names required a little trickery.  Somehow I needed to associate the ssh://, scp://, and rdp:// protocols with their respective clients (putty, WinSCP, and mstsc).  Fortunately, JJ Clements had already figured this out and published two very clever little batch files that solved the problem nicely (rdp  and ssh/scp).  My only caveat with using these batch files is that you may need to alter them slightly depending upon where you installed putty and WinSCP, and whether you can write to your C:\Windows directory.


url_wordImage 1 – Word document url_htmlImage 2 – HTML document


Now I have one place from which I can access all of the applications and hosts I need to manage.  I created one document for each environment (DEV, QA, and PROD) and linked them together.  (This allows me to fit all of the links on a single page without having to scroll.)  Since a Word document is the storage location for all the URLs and hosts, it can easily be updated and shared among project teams.  I have used this solution several times and have found it to be extremely helpful, so I thought I would pass on the idea to a larger audience; perhaps you will find it useful too.

An Excel-based DQL Query Tool

One of the items on my personal to do list was to create a simple DQL query tool using Excel.  To me, it seemed like a natural fit:  Excel was adept at displaying tabular data, it had a robust scripting language to implement the logic (VBA), and VBA was dot-Net-compliant so it could load the DFC PIA directly.  The only problem is that I waited too long to create this tool and the DFC PIA is no longer distributed or supported by EMC.

Instead of using the DFC PIA, I discovered Obba — a framework for integrating Java with spreadsheets, both Excel and Open Office.  It is a little “heavier” solution than I had hoped to create but useful and interesting nonetheless. I had envisioned the DQL Query Tool as more of an Excel Add-in or something as portable.  Obba launches a small, local, Java-based server to handle the integration instead of handling the DFC calls internally as the PIA would have.

You can download the Excel DQL Query Tool here  if you are interested.  I found that VBA/Obba programming takes a little getting used to in the way it handles variables, objects, and methods, but after a few examples it makes sense.

For details regarding installing and running Obba, see the Obba website ( For details regarding configuring and running the Excel query tool, see the README file included in the download.

Query Screen

Query Screen

Results Screen

Results Screen

Next, I think I will pursue creating a tool using the DFS RESTful services.  For this interface I will likely use Excel-REST.  Hopefully that integration will prove to be a little “lighter weight” than this one.

Yet Another Documentum Export Tool

How about we start the new year with another Documentum export tool, DeepExport?  This a very simple Java/DFC-based tool that logs into a Documentum repository and exports the content of any folder (recursively) to the local hard drive, preserving the folder structure.  The log file snippet below demonstrates how the folder structure is preserved.  Note that metadata is NOT exported; this is a content-only tool.  If you need to export content and metadata, check out the QuikDIE export tool.

To run the DeepExport tool, use the export.bat file. You will need to adjust the and in the /config folder to be appropriate for your environment.

The DeepExport tool expects to read a file in its root directory with the following information: name of the Documentum repository
docbase.user= name of the Documentum user to logon to the repository
docbase.password= password for the Documentum user
export.source= the cabinet/folder to export.  For example, /Temp, or /News/2014/. the local directory to receive the export.  For example, c:/temp/export.

In addition to the properties file, you can supply DeepExport with two additional command line parameters:

-version will export all versions of all documents found and avoid file name collisions in the target folder.
-help will display a brief screen

DeepExport creates a time-stamped log file to track all of the files it exports. For example:

Documentum Deep Export 2015-01-02 17:08:18
(C) 2014 MSRoth -

Base export path = c:/temp/export
Found 55 folders to export
Found 6457 documents to export
  Not a document -- skipping test_query (0801e4538000f520)
  Exporting TargetSetup.Result --> c:\temp\export\Temp/TargetSetup.Result.txt (0901e45380000220)
  Exporting sysobjectContent.pdf --> c:\temp\export\Temp/sysobjectContent.pdf.pdf (0901e4538000597b)
  Exporting Copy of TargetSetup.Result --> c:\temp\export\Temp/Copy of TargetSetup.Result.txt (0901e45380005a54)
  Exporting Copy (2) of TargetSetup.Result --> c:\temp\export\Temp/Copy (2) of TargetSetup.Result.txt (0901e45380005a55)
  Exporting Walmart.txt --> c:\temp\export\Temp/Walmart.txt.txt (0901e4538000dd17)
  Exporting Walmart.rtf --> c:\temp\export\Temp/Walmart.rtf.rtf (0901e4538000e9aa)
  Exporting HP-DeskJet-MFP-5100_userguide.docx --> c:\temp\export\Temp/HP-DeskJet-MFP-5100_userguide.docx.docx (0901e4538002f990)
  Exporting --> c:\temp\export\Temp/ (0901e4538002fd65)
  Exporting --> c:\temp\export\Temp/ (0901e4538002fd66)
  Exporting Folder: /Temp/Jobs
  Exporting Folder: /Temp/Jobs/dm_DataDictionaryPublisher
  Exporting 11/14/2014 3:28:12 PM dm_DataDictionaryPublisher	--> c:\temp\export\Temp\Jobs\dm_DataDictionaryPublisher/11-14-2014 3_28_12 PM dm_DataDictionaryPublisher.txt	(0901e4538002b50c)
  Exporting 11/14/2014 3:44:37 PM dm_DataDictionaryPublisher	--> c:\temp\export\Temp\Jobs\dm_DataDictionaryPublisher/11-14-2014 3_44_37 PM dm_DataDictionaryPublisher.txt	(0901e4538002b564)
  Exporting 11/14/2014 4:12:38 PM dm_DataDictionaryPublisher	--> c:\temp\export\Temp\Jobs\dm_DataDictionaryPublisher/11-14-2014 4_12_38 PM dm_DataDictionaryPublisher.txt	(0901e4538002b5b2)

It seems to work well enough for me; I’ve had occasion to use it a few times. Let me know what you think.

Composer and Repoint

Over the years, Repoint has been a standard, must-have Documentum developer’s tool.  (It’s really unfortunate it has fallen out of active support and development.)  Anyway, here is a link to a step-by-step guide for getting Repoint to work inside of Composer:  The article itself is a bit dated, but it has been kept alive by the comments.  The configuration is tedious, but it does work.  The screenshot below is using Composer 6.7 SP2.


You can find download links for Repoint, some alternatives, and a host of other tools on my Tools page.

Documentum Object Model Diagramer

Have you ever had to diagram a Documentum object model for a client deliverable?  You know, the client wanted to see a hierarchical diagram depicting the relationships among the Documentum object types as well as all of the custom attributes.  Over the years, I have produced these in a variety of ways including Word, Excel, PowerPoint, and Visio.  The DRX tool even has a module that produces a diagram of the object model hierarchy using ASCII characters.

Stephane Marcon has created a cool little tool called the Object Model Exporter that uses the  Graphviz graphing library to produce a nice hierarchical diagram — including attributes — of the Documentum object model in JPG format.  You can download it from his blog, or directly from SourceForge here.

Here is an example of the resulting diagram:


Cool, eh?

I found the tool easy to use and produced good results.  My only caution is that the diagram the tool produces is always named objectmodel.jpg.  If you don’t manually rename it after each run you will overwrite each diagram.

Documentum Bulk Export Tool v1.3

I updated the QuikDIE Documentum Export Tool to v1.3.  You can download it here.

This update includes the following changes and additions:

  • Added r_creator_name, r_creation_date, r_modifier, and r_modify_date attributes to the standard output set.
  • Converted object_name, subject, title and all custom attribute values to XML-safe.
  • Updated the dmRecordSet JAR to v1.2 and included it in the /lib folder.
  • Fixed bug that considered any object not starting with “dm_” to be custom, instead of ignoring all objects in OMIT_OBJ_PREFIXES array.
  • Included source project in archive.
  • Minor cosmetic tweaks.

The first two enhancements were suggested by Malcolm MacArthur (thanks!).  You can see that discussion thread here.

DRX 2.3 Released

Brian Y. and I are pleased to announce the release of DRX (Documentum Repository eXplorer) version 2.3.

DRX is a powerful exploration, auditing, and documentation tool that allows Documentum administrators and developers to quickly document vital information  about their repositories and environments. DRX provides a simple UI to  facilitate logging into the Documentum repository, configuring and running  specific reporting modules, and viewing the resultant reports. DRX reports are  generated in HTML for easy viewing and XML for more complex processing.

DRX is distributed as an EXE file that contains all of the Java code,  requisite libraries, JVM and the DFC required to run the program. Its compact  distribution and simple installation (simply unzip it!) make it easy to run from  a thumb drive, or move from one computer to another.

Here are the highlighting and new features in version 2.3:

  • Added additional stats for WF (terminated and halted)
  • Separated SCS from WebPub reporting (still in same module)
  • Added additional product/feature checks in the EnvInfo Module
  • Distribute config/dfc.keystore file to avoid endless hangs in certain conditions
  • Tweaked queries for custom object types to eliminate stock BOF classes
  • Corrected bug in role query
  • Corrected bug in TCS detection
  • Add “top user” queries to users and groups module
  • Expanded role reporting to match group reporting
  • General code cleanup and standardization
  • Added drx.exclude_types property to config/ These entries will be object types excluded from the Custom Types and Hierarchy report.
  • DRX no longer overwrites the config/ file (required for drx.exclude_types).
  • Added Webtop Presets module (user must copy dfc.globalregisty.* entries from the Content Server to the DRX confg/ file.

DRX v2.3 is available for download here:

If you haven’t tried DRX yet, I encourage you to download it and give it a try. For a brief explanation of DRX, see here .  And, as always, if you have any feedback or feature requests, please log them here.  Enjoy.

%d bloggers like this: