EMC World 2008: Documentum Foundation Services (DFS) – Best Practices and Real World Examples

Michael Mohen and Paul Kwitkin of EMC Professional Services are going to share some of their experiences with DFS in the wild. I’ve been looking forward to this session and Craig had some good things to say about it earlier. Would be nice to hear directly from a client though. However, can’t blame Michael and Paul for that little detail. On to the show.

  • DFS is a component of Enterprise Content Services, ECS (Great, a new term)
    • DFS is core package of ECS (SaaS services separate from DFS but part of ECS is my guess)
  • DFS will work against 5.3, with some caveats with the workflow services
  • Primary Interop Assembler is gone for .NET, so DFS is the way for .NET applications to talk to Documentum
  • How do we solve the problem
    • Create Java Service, Plain old Java object (POJO) or Service-Based Object (SBO)
    • Annotate service, DfsPojoService or DfsBofService
    • User DFS toolsto generate artifacts
      • WSDL, proxies (SOAP, local), etc.
      • Optional Java and .NET productivity layers
    • (Way too fast on the slides. Luckily they are online)
    • Use generated Java client classes to build tests
      • In-process API first to simplify development
    • Use DFS tools to package the WAR/EAR application
      • Validate tests running remotely (same tests!)
    • Validate WSDL with non-Java clients
  • DFS enables SOA but it cannot provide SOA (I would criticize this point, but there may be users here that don’t know it, they are doing well with this point and I’m a little glad it is in here)
    • Users must separately invest in governance
  • DFS extends the Java standard JAX-WS tools
    • Thus Java 5+ environment (It is a D6+ application, so this is redundant)
  • Requires JAX-WS 2.1.2 reference implementation from Sun
    • JAXB 2.1.3 reference implementation from Sun
    • JBoss 4.2 support is coming in D6.5 support in 6.5
    • Tomcat support coming in 6.5
  • Performance appears to scale well, see the presentation for a chart and numbers.
  • UCF versus MTOM file transfers
    • UCF was slighter faster in 50MB to 100MB range, similar below that
    • MTOM had issues around 100MB
  • Best Practices (all in presentation)
    • When setting repeating string attributes on an object, use semi-colon delimited string
    • QueryMaxResultCount defaults to 100, not -1 as documented
    • When results are expected to be over 500, you must cache and cycle through the reults
    • When using UCF, you must set both the ServiceContext and the ObjectOperations Content Transfer modes to UCF, not just one or the other as the documenation states. We also found that when ContentTransferMode was set to UCF, custom services would return a ucf error (even if they were not doing content transfer) so I explicitly set the ServiceContext and ObjectOperations to base64 when not doing content transfer and to UCF when doing content transfer.
    • specify the attribute value “requires Authentication=’false'” to conduct services that don’t require authentication (docbase list…)
    • Ensure you explicitly specity your propertyProfile for querying objects
    • Use the Schema Service to validate attribute information before calling updates and creation calls
    • Use the DataPackage for services that return result sets
    • When validating a returned DataPackage, check to see if it is NULL, and if not, see if .DataObjects is NULL
    • For DataObject, r_object_id is always Identity, not as important in D6.5
    • JAVA_HOME environment variable needed for UCF data transfer on the client even though WDK applications don’t need it
    • Don’t run DFS on a D5.3 Content Server machine, security hole, not an issue in pure D6 environment, just put DFS on its own server in 5.3
    • Session affinity still required for clustered environments, DFS sessions are still tied to the host
  • The examples/demos are available via Craig’s post. (They look pretty)
  • People are building their own SharePoint integrations with DFS

Trying to determine if I want to go hear about the Social Computing in EMC or take some time to work. This is a 8:30-2:00 session heavy day with breaks in-between. No lunch break, though I suspect, and hope, that snacks will be out during the breaks.


All information in this post was gathered from the presenters and presentation. It does not reflect my opinion unless clearly indicated (Italics in parenthesis). Any errors are most likely from my misunderstanding a statement or imperfectly recording the information. Updates to correct information are reflected in red, but will not be otherwise indicated.

All statements about the future of EMC products and strategy are subject to change due to a large variety of factors.

7 thoughts on “EMC World 2008: Documentum Foundation Services (DFS) – Best Practices and Real World Examples

  1. Benny says:

    I would like to use .NET client for consuming DFS.
    I would be very greatful for an answers.
    How can I pass Windows Credentials to DFS?
    How can I handle large file 100MB and above for streaming?
    Since there isn’t any document URL which are public Can I copied large files from Documentum to CIFS file system and send a URL to the file so the client can connect and stream?


  2. We are trying to run DFS 6.5 SP2 against Documentum Server 5.3 SP5, which is said to work.

    Trying to run DotNetSamples included in DFS SDK for consuming DFS with the .NET Productivity Layer, it turns out that in our case some examples work fine (such as running queries on QueryService and create folder on ObjectServcies), whereas many others fail, including the ones creating files with content. Since the caught exception doesn’t tell me much, I checked what’s sent over the wire and have seen that apparently a specific attribute is the problem:

    You have specified an invalid attribute name (is_cache_acs)

    Since the example doesn’t set that attribute explicitely on client side (nor it’s contained in the HTTP request to the server), I assume that DFS on server side is using that attribute on DFC but I have no clue why this causes trouble…


  3. Prasad says:

    I want to use documentum transaction in .Net. Can i use it? If yes then please provide code for the same.

    Thanks in advance


  4. Guys, I’m new to Documentum and the guys I work with only have experience with the interop assemblies (DFC?). I want to create an application in .NET to interact with Documentum so believe DFS is the way to go. Are these standard web services which I can connect to via .NET? I’m struggling to find decent information on the web!


Comments are closed.