D2 configuration vs. a_is_hidden

Recently we came across a requirement that involved showing the a_is_hidden attribute in the content widget, regardless of its value.

At first glance, it seemed an easy goal to achieve, just add the attribute to the column list and it will work. Well, it doesn’t. The content widget just displays objects with a_is_hidden=false (duh!).

Next step, would be to find the configuration that manages this behaviour. Well, after looking a bit, we found the “configuration” that handles this:

com.emc.d2fs.dctm.content.FolderContent generates a DQL in order to retrieve the contents of the folder, and the method that generates this query uses com.emc.d2.api.preferences.ID2cPreferences to retrieve different preferences related to queries.

Some decompiling get us to the configurable side of things:


 public DqlFilter getDqlFilter()
DqlFilter result = new DqlFilter(false, false);
return result;


public final class DqlFilter
private boolean m_showHidden;
private boolean m_showArchive;

public DqlFilter(boolean showHidden, boolean showArchive)
this.m_showHidden = showHidden;
this.m_showArchive = showArchive;

public String toString()
StringBuffer result = new StringBuffer();
if (!this.m_showHidden) {
result.append("a_is_hidden = false");
if (!this.m_showArchive)
if (result.length() != 0) {
result.append(" and ");
result.append("a_archive = false");
return result.toString();

So much for configurable application…

Assap 7.0 vs msg format

We’ve been facing a weird issue with assap 7.0 sp2 and .msg files in SAP GUI. Any file will open from SAP GUI (PDF, TIFF, JPEG) but trying to open a .msg file will prompt user to download an “unknown format” file named as the repository.

However, opening the .msg file from Webtop, any DFC client or the dmview client works just fine.

We tried suggestions from support page (adding mime type to server configuration, to dm_format, etc.) with no luck.

So I decompiled the servlet that sends the response (com.documentum.ei.al.SendHttpResponse):

 if (filename != null)
 filename = URLEncoder.encode(filename, "UTF-8");
 String showFileOpenDialog = PropertiesManager.getALPropValue("archiving.fileOpen.confirmation");
 if ((showFileOpenDialog != null) && (showFileOpenDialog.equalsIgnoreCase("true"))) {
 response.setHeader("content-disposition", "attachment; filename=" + filename);


So I decided to turn on the showFileOpenDialog option on al.properties and.. it works! However, this prompts the user with a dialog showing “open/save” options for any file.

So, what’s going on? Well, it looks like that browsers (as I can reproduce this behaviour in any browser by calling the url that SAP GUI uses) won’t handle correctly downloads with mime-types associated to external applications (because files handled by the browser work fine), unless the content-disposition header is set, so in this particular case, to just solve the problem with .msg files:

if (filename != null)
filename = URLEncoder.encode(filename, "UTF-8");
String showFileOpenDialog = PropertiesManager.getALPropValue("archiving.fileOpen.confirmation");
if ((showFileOpenDialog != null) && (showFileOpenDialog.equalsIgnoreCase("true"))) {
response.setHeader("content-disposition", "attachment; filename=" + filename);
if (context.getContentType().equalsIgnoreCase("application/vnd.ms-outlook")) {
response.setHeader("content-disposition", "inline; filename=" + filename);

and throwing the class into WEB-INF/classes solves the problem

Documentum 16.3 delayed until Feb 2018

If you access the new support page, there is a section where you can find roadmaps for the products, and if you check the Documentum related ones, you’ll see the target date for ths new version listing new features. Without going into much detail (As I’m not sure how public this info is), these caught my atention:

  1. Ongoing exposure of D2 APIs through REST (goodbye DFS?)
  2. Native support for S3 object storage protocols to alleviate storage costs (goodbye OnDemand, hello AWS?)
  3. New REST Services (see #1, no mention of DFS anywhere to be found)
  4. Webtop will get a 16.3 version (yeah!)


Welcome to OpenText My Support

On August 25, 2017 at 8:00 P.M. EST, the Dell EMC Enterprise Content Division, including
Documentum, Application Xtender, Captiva, Kazeon, Document Sciences and LEAP will officially be integrated into OpenText Customer Support systems. While the customer service quality you’ve come to expect won’t change, the way you access support resources will.

On August 25, 2017 at 8:00 P.M. EST, OpenText’s online support portal known as My Support will become the primary system that you use to submit, update and monitor the progress of your organization’s support requests for former ECD technology products such as Application Xtender, Captiva, Documentum, Kazeon, Document Sciences and LEAP. In addition, you will be able to access support resources such as forums, documentation, knowledge base articles, account information and much more!
To help make the transition easier, we have migrated your existing tickets to My Support. Any new tickets you create with the My Support wizard will also be accessible there.

Centera end of life

Centera will reach its end-of-life on March 2018. After that date DellEMC will stop manufacturing parts and will keep it on support until 2023, when you’ll be on your own if you’re still storing your Documentum data on Centera.

Time to say goodbye to those .pea files and to start thinking about an alternative storage.

Debugging D2 4.5/4.6

It still surprises me when people tell me that they can “only” debug D2 code by adding output to their plugins so, if you’re using eclipse as your IDE, here are some steps that most likely will help you to debug code from an eclipse server (Tomcat):

Extract all files from D2.war and D2-Config.war (just in case you want to have access to D2-Config from a local environment, not much you can debug here) and copy the D2 lib folder to your computer.

  • Generate lockbox file for your environment (probably this is the hardest part :D)
  • Update dfc.properties in both.
  • Update D2’s D2FS.properties (update absolute path in lockboxPath) and logback.xml (update logs path)
  • Update D2-Config’s D2-Config.properties (update absolute path in lockboxPath) and logback.xml (update logs path)
  • Copy following libraries to Tomcat folder:
    • /endorsed: (from d2-config/web-inf/lib)
      • crypto.jar
      • cryptojce.jar
      • cryptojcommon.jar
      • jcm.jar
      • jcmandroidfips.jar
      • jcmFIPS.jar
      • util.jar
    • /lib:
      • LB.jar
      • LBJNI.jar
  • Configure a new server in eclipse. In Run Configuration add the following:
    • Arguments:
      • -Djava.endorsed.dirs=”<absolute path to tomcat>\endorsed
      • -Djava.io.tmpdir=”<absolute path to some temp folder>\d2″
      • -Dclb.library.path=”<absolute path to D2 libraries folder>\lockbox\win_vc100_x64″ (choose your OS library)
    • Classpath:
      • User entries:
        • Path to LB.jar and LBJNI.jar
      • Environment:
        • Classpath: <absolute path to D2 libraries folder>\LB.jar;<absolute path to D2 libraries folder>\LBJNI.jar;<absolute path to D2 libraries folder>\C6-Common.jar;<absolute path to Documentum DFC’s dctm.jar>;<absolute path to Documentum config folder>
        • Path: <absolute path to D2 libraries folder>\lockbox\win_vc100_x64;%PATH%
    • Add project to Sources
  • Add D2 and D2-Config as deployed modules to your server configuration.
  • Start server