{"id":16411,"date":"2021-06-14T16:53:31","date_gmt":"2021-06-14T14:53:31","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/"},"modified":"2025-10-24T09:38:49","modified_gmt":"2025-10-24T07:38:49","slug":"dctmping-a-documentum-repository-checker-utility","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/","title":{"rendered":"dctmping, A Documentum Repository Checker Utility"},"content":{"rendered":"<p>When working with containers, the usual trend is to make them as compact as possible by removing any file or executable that is not used by what is deployed in it. Typically, interactive commands are good candidates not to be installed. Sometimes, this trend is so extreme that even simple utilities such as ping or even the less pager are missing from the containers. This is generally fine once a container reaches the production stage but not so much while what&#8217;s deployed in it is still in development and has not reached its full maturity yet. Without such essentials utilities, one might as well be blind and deaf.<br \/>\nRecently, I wanted to check if a containerized D2 installation could reach its target repository but could not find any of the usual command-line tools that are included with the content server, such as iapi or dctmbroker. Bummer, I thought, but less politely. Admittedly, those tools belong to the content server binaries and not to DFCs clients such as D2 and DA, so that makes sense. Maybe, but that does not solve my problem.<br \/>\nIn article <a href=\"https:\/\/www.dbi-services.com\/blog\/a-small-footprint-container-with-idql-iapi-clients\/\">A Small Footprint Docker Container with Documentum command-line Tools<\/a>, I showed how to have a minimalist installation of the iapi, idql and dmdocbroker command-line tools that could be containerized but for my current need, I don&#8217;t need so much power. A bare repository ping, a dctmping if you will, would be enough. Clearly, as D2 is a DFCs application, a simple DFCs-based java utility would be just what the doctor ordered. There are probably hundreds variants of such a basic utility floating on the Web but here is my take on it anyway.<\/p>\n<h2>The code<\/h2>\n<p>The following listing generates the dctmping.java program.<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [25,39,49,68,103,110]\">\n$ cat - &lt;&lt; dctmping.java\n\/\/ a healthcheck program to check whether all the repositories whose docbroker's hosts are defined in dfc.properties are reachable;\n\/\/ cec at dbi-services.com, June 201;\n\/\/ to compile: export CLASSPATH=\/path\/to\/the\/dfc.jar javac dctmping.java\n\/\/ to execute: java -classpath .:\/path\/to\/dfc\/config:$CLASSPATH dctmping [target_docbase user_name password]\n\/\/ if target_docbase is given, the programm will attempt to connect to it using the command-line parameters user_name and password and run a SELECT query;\n \nimport com.documentum.fc.client.IDfClient;\nimport com.documentum.fc.client.DfClient;\nimport com.documentum.fc.client.DfQuery;\nimport com.documentum.fc.client.IDfCollection;\nimport com.documentum.fc.client.IDfDocbaseMap;\nimport com.documentum.fc.client.IDfQuery;\nimport com.documentum.fc.client.IDfSession;\nimport com.documentum.fc.client.IDfSessionManager;\nimport com.documentum.fc.common.DfLoginInfo;\nimport com.documentum.fc.common.IDfLoginInfo;\nimport com.documentum.fc.client.IDfTypedObject;\nimport java.io.RandomAccessFile;\n \npublic class dctmping {\n   IDfSessionManager sessMgr = null;\n   IDfSession idfSession;\n \n   public void showDFC_properties_file() throws Exception {\n      System.out.println(\"in showDFC_properties_file\");\n      IDfClient client = DfClient.getLocalClient();\n      IDfTypedObject apiConfig = client.getClientConfig();\n      String[] values = apiConfig.getString(\"dfc.config.file\").split(\":\");\n      System.out.printf(\"dfc.properties file found in %snn\", values[1]);\n      RandomAccessFile f_in = new RandomAccessFile(values[1], \"r\");\n      String s;\n      while ((s = f_in.readLine()) != null) {\n         System.out.println(s);\n      }\n      f_in.close();\n   }\n \n   public void getAllDocbases() throws Exception {\n      System.out.printf(\"%nin getAllDocbases%n\");\n      IDfClient client = DfClient.getLocalClient();\n      IDfDocbaseMap docbaseMap = client.getDocbaseMap();\n      for (int i = 0; i &lt; docbaseMap.getDocbaseCount(); i++) {\n          System.out.println(\"Docbase Name : \" + docbaseMap.getDocbaseName(i));\n          System.out.println(\"Docbase Desc : \" + docbaseMap.getDocbaseDescription(i));\n      }\n   }\n \n   public void getDfSession(String repo, String user, String passwd) throws Exception {\n      System.out.printf(\"%nin getDfSession%n\");\n      IDfLoginInfo login = new DfLoginInfo();\n      login.setUser(user);\n      login.setPassword(passwd);\n      IDfClient client = DfClient.getLocalClient();\n      sessMgr = client.newSessionManager();\n      sessMgr.setIdentity(repo, login);\n      idfSession = sessMgr.getSession(repo);\n      if (idfSession != null)\n          System.out.printf(\"Session created successfully in repository %s as user %sn\", repo, user);\n      else\n         throw new Exception();\n   }\n \n   public void releaseSession() throws Exception {\n      sessMgr.release(idfSession);\n   }\n \n   public void API_select(String repo, String dql) throws Exception {\n      System.out.printf(\"%nin API_select%s%n\", repo);\n      System.out.printf(\"SELECT-ing in repository %sn\", repo);\n      System.out.printf(\"Query is: %sn\", dql);\n      IDfQuery query = new DfQuery();\n      query.setDQL(dql);\n      IDfCollection collection = null;\n      String r_object_id = null;\n      String object_name = null;\n      final int max_listed = 20;\n      int count = 0;\n      System.out.printf(\"%-16s  %sn\", \"r_object_id\", \"object_name\");\n      System.out.printf(\"%-16s  %sn\", \"----------------\", \"-----------\");\n      try {\n         collection = query.execute(idfSession, IDfQuery.DF_READ_QUERY);\n         while (collection.next()) {\n            count++;\n            if (max_listed == count) {\n               System.out.printf(\"... max %d reached, skipping until end of result set ...n\", max_listed);\n               continue;\n            }\n            else if (count &gt; max_listed)\n               continue;\n            r_object_id = collection.getString(\"r_object_id\");\n            object_name = collection.getString(\"object_name\");\n            System.out.printf(\"%-16s  %sn\", r_object_id, object_name);\n         }\n         System.out.printf(\"%d documents foundsn\", count);\n      } finally {\n         if (collection != null) {\n            collection.close();\n         }\n      }\n   }\n  \n   public static void main(String[] args) throws Exception {\n      dctmping dmtest = new dctmping();\n      dmtest.showDFC_properties_file();\n      dmtest.getAllDocbases();\n      String docbase;\n      String user;\n      String passwd;\n      if (0 == args.length || args.length &gt; 3) {\n         System.out.println(\"nUsage: dctmping [target_docbase [user_name [password]]]\");\n         System.exit(1);\n      }\n      if (1 == args.length) {\n         docbase = args[0];\n         user    = \"dmadmin\";\n         passwd  = \"trusted:no_password_needed\";\n      } \n      else if (2 == args.length) {\n         docbase = args[0];\n         user    = args[1];\n         passwd  = \"trusted:no_password_needed\";\n      } \n      else {\n         docbase = args[0];\n         user    = args[1];\n         passwd  = args[2];\n      } \n\n      String[] queries = {\"SELECT r_object_id, object_name from dm_document where folder('\/System\/Sysadmin\/Reports', descend);\",\n                          \"SELECT r_object_id, object_name from dm_cabinet;\"};\n      for (String dql_stmt: queries) {\n         try {\n            dmtest.getDfSession(docbase, user, passwd);\n            dmtest.API_select(docbase, dql_stmt);\n         }\n         catch(Exception exception) {\n            System.out.printf(\"Error while attempting to run DQl query\", docbase, user);\n            exception.printStackTrace();\n         }\n         finally {\n            try {\n               dmtest.releaseSession();\n            }\n            catch(Exception exception) {}\n         }\n      }\n   }\n}\neoj\n<\/pre>\n<p>Compile it as instructed in the header, e.g.:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\n$ export DOCUMENTUM=\/home\/dmadmin\/documentum\n$ export CLASSPATH=$DOCUMENTUM\/shared\/dfc\/dfc.jar\n$ javac dctmping.java\n<\/pre>\n<p>Use the command below to execute it:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\n$ java -classpath .:$DOCUMENTUM\/shared\/config:$CLASSPATH dctmping [target_docbase [user_name [password]]]\n<\/pre>\n<p>When no parameter is given on the command-line (line 110), dctmping attempts to reach the dfc.properties file and displays its content if it succeeds (function showDFC_properties_file starting on line 25). This proves that the file is accessible through one of the paths in $CLASSPATH.<br \/>\nIt then displays the help message (line 16 below):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1,2,12,16]\">\n$ java -classpath .:$DOCUMENTUM\/shared\/config:$CLASSPATH dctmping\nin showDFC_properties_file\ndfc.properties file found in \/home\/dmadmin\/documentum\/shared\/config\/dfc.properties\n\ndfc.data.dir=\/home\/dmadmin\/documentum\/shared\ndfc.tokenstorage.dir=\/home\/dmadmin\/documentum\/shared\/apptoken\ndfc.tokenstorage.enable=false\n\ndfc.docbroker.host[0]=dmtest.cec\ndfc.docbroker.port[0]=1489\n\nin getAllDocbases\nDocbase Name : dmtest73\nDocbase Desc : a v7.3 test repository\n\nUsage: dctmping [target_docbase [user_name [password]]]\n<\/pre>\n<p>Starting on line 12 above (see function getAllDocbases starting on line 39), a list of all the reachable docbases is given, here only one, dmtest73. In some installations, this list be more populated, e.g.:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\nDocbase Name : global_repository\nDocbase Desc : Global Repository\nDocbase Name : SERAC\nDocbase Desc : SERAC CTLQ Repository\nDocbase Name : CARAC\nDocbase Desc : CARAC CTLQ Repository\n<\/pre>\n<p>At least one parameter is needed: the repository name. The user default to &#8220;dmadmin&#8221;. A password must be given when connecting remotely from the content server. If connecting locally, it can be anything as the user is trusted (if trusted authentication is allowed), or even left empty. The session is opened by function getDfSession() starting on line 49.<\/p>\n<h2>A Real Case Application<\/h2>\n<p>To check a remote repository&#8217;s access, all 3 parameters are required, e.g.:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [1,16,21,31,36]\">\n$ java -classpath .:$CLASSPATH dctmping dmtest73 dmadmin my_password\nin showDFC_properties_file\ndfc.properties file found in \/home\/dmadmin\/documentum\/shared\/config\/dfc.properties\n\ndfc.data.dir=\/home\/dmadmin\/documentum\/shared\ndfc.tokenstorage.dir=\/home\/dmadmin\/documentum\/shared\/apptoken\ndfc.tokenstorage.enable=false\n\ndfc.docbroker.host[0]=dmtest.cec\ndfc.docbroker.port[0]=1489\n\nin getAllDocbases\nDocbase Name : dmtest73\nDocbase Desc : a v7.3 test repository\n\nin getDfSession\nSession created successfully in repository dmtest73 as user dmadmin\n\nin API_selectdmtest73\nSELECT-ing in repository dmtest73\nQuery is: SELECT r_object_id, object_name from dm_document where folder('\/System\/Sysadmin\/Reports', descend);\nr_object_id       object_name\n----------------  -----------\n0900c35080002a1b  StateOfDocbase\n0900c350800029d7  UpdateStats\n0900c35080002a11  ContentWarning\n0900c35080002a18  DBWarning\n0900c3508000211e  ConsistencyChecker\n5 documents founds\n\nin getDfSession\nSession created successfully in repository dmtest73 as user dmadmin\n\nin API_selectdmtest73\nSELECT-ing in repository dmtest73\nQuery is: SELECT r_object_id, object_name from dm_cabinet;\nr_object_id       object_name\n----------------  -----------\n0c00c35080000107  Temp\n0c00c3508000012f  Templates\n0c00c3508000057b  dm_bof_registry\n0c00c350800001ba  Integration\n0c00c35080000105  dmadmin\n0c00c35080000104  dmtest73\n0c00c35080000106  System\n0c00c35080000130  Resources\n8 documents founds\n<\/pre>\n<p>After displaying the content of the dfc.properties file, dctmping attempts to connect to the given repository with the given credentials and runs both queries below (see function API_select() starting on line 68):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: []\">\nSELECT r_object_id, object_name from dm_document where folder('\/System\/Sysadmin\/Reports', descend);\nSELECT r_object_id, object_name from dm_cabinet;\n<\/pre>\n<p>As we don&#8217;t need a full listing for testing the connectivity, especially when it may be very large and take several minutes to complete, a maximum of 20 rows by query is returned.<\/p>\n<h2>Checking the global_registry<\/h2>\n<p>If a global_registry repository has been defined in the dfc.properties file, the credentials to access it are also listed in that file as illustrated below:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [2]\">\n...\ndfc.globalregistry.repository=my_global_registry\ndfc.globalregistry.username=dm_bof_registry\ndfc.globalregistry.password=AFAIKL8C2Y\/2gRyQUV1R7pmP7hfBDpafeWPST9KKlQRtZVJ4Ya0MhLsEZKmWr1ok9+oThA==\n...\n<\/pre>\n<p>Eventhough the password is encrypted, it is available verbatim to connect to the repository as shown below:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [q,4]\">\n$ java -classpath .:$DOCUMENTUM\/shared\/config:$CLASSPATH dctmping dm_bof_registry 'AFAIKL8C2Y\/2gRyQUV1R7pmP7hfBDpafeWPST9KKlQRtZVJ4Ya0MhLsEZKmWr1ok9+oThA=='\n...\nin getDfSession\nSession created successfully in repository my_global_registry as user dm_bof_registry\n \nin API_selectmy_global_registry\nSELECT-ing in repository my_global_registry\nQuery is: SELECT r_object_id, object_name from dm_cabinet;\nr_object_id       object_name\n----------------  -----------\n0c0f476f80000106  System\n0c0f476f800005b4  dm_bof_registry\n2 documents founds\n...\n<\/pre>\n<p>Note that the utility does not check if the given docbase is a global_registry, so the connection attempt may raise an authentication error, but at least the given docbase has been proved to be reachable (or not).<\/p>\n<h2>Conclusion<\/h2>\n<p>This innocent little stand-alone utility can be easily included in any docker image and can assist in ascertaining at least 5 dependencies in the context of a post-deployment&#8217;s sanity check or of a problem troubleshooting:<\/p>\n<ol>\n<li>the correct installation of the DFCs<\/li>\n<li>the correct configuration of the dfc.properties<\/li>\n<li>the correct initialization of $DOCUMENTUM and $CLASSPATH environment variables<\/li>\n<li>the accessibility of the remote repository(ies)<\/li>\n<li>and finally, the credentials to connect to said repository.<\/li>\n<\/ol>\n<p>That is one big chunk of pre-requisites to check at once even before the DFCs clients start.<br \/>\nAs a bonus, it also lists all the repositories potentially accessible through the docbrokers listed in the dfc.properties, which is useful in case the local machine hosts a mutualized service serving several repositories. Another freebie is that, if a global_registry is defined in the dfc.properties file, it can be checked too; actually, the utility could be improved to do that automatically (or manually in a subsequent re-run) as the needed credentials are given in that file and require no user interaction but, as they say, let&#8217;s leave that as an exercise for the reader.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When working with containers, the usual trend is to make them as compact as possible by removing any file or executable that is not used by what is deployed in it. Typically, interactive commands are good candidates not to be installed. Sometimes, this trend is so extreme that even simple utilities such as ping or [&hellip;]<\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[525],"tags":[2200,129,214],"type_dbi":[],"class_list":["post-16411","post","type-post","status-publish","format-standard","hentry","category-enterprise-content-management","tag-dfcs","tag-documentum","tag-java"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>dctmping, A Documentum Repository Checker Utility - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"dctmping, A Documentum Repository Checker Utility\" \/>\n<meta property=\"og:description\" content=\"When working with containers, the usual trend is to make them as compact as possible by removing any file or executable that is not used by what is deployed in it. Typically, interactive commands are good candidates not to be installed. Sometimes, this trend is so extreme that even simple utilities such as ping or [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-14T14:53:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-24T07:38:49+00:00\" \/>\n<meta name=\"author\" content=\"Middleware Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Middleware Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\"},\"author\":{\"name\":\"Middleware Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"headline\":\"dctmping, A Documentum Repository Checker Utility\",\"datePublished\":\"2021-06-14T14:53:31+00:00\",\"dateModified\":\"2025-10-24T07:38:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\"},\"wordCount\":812,\"commentCount\":0,\"keywords\":[\"DFCs\",\"Documentum\",\"Java\"],\"articleSection\":[\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\",\"name\":\"dctmping, A Documentum Repository Checker Utility - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2021-06-14T14:53:31+00:00\",\"dateModified\":\"2025-10-24T07:38:49+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"dctmping, A Documentum Repository Checker Utility\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1\",\"name\":\"Middleware Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g\",\"caption\":\"Middleware Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"dctmping, A Documentum Repository Checker Utility - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/","og_locale":"en_US","og_type":"article","og_title":"dctmping, A Documentum Repository Checker Utility","og_description":"When working with containers, the usual trend is to make them as compact as possible by removing any file or executable that is not used by what is deployed in it. Typically, interactive commands are good candidates not to be installed. Sometimes, this trend is so extreme that even simple utilities such as ping or [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/","og_site_name":"dbi Blog","article_published_time":"2021-06-14T14:53:31+00:00","article_modified_time":"2025-10-24T07:38:49+00:00","author":"Middleware Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Middleware Team","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/"},"author":{"name":"Middleware Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"headline":"dctmping, A Documentum Repository Checker Utility","datePublished":"2021-06-14T14:53:31+00:00","dateModified":"2025-10-24T07:38:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/"},"wordCount":812,"commentCount":0,"keywords":["DFCs","Documentum","Java"],"articleSection":["Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/","url":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/","name":"dctmping, A Documentum Repository Checker Utility - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2021-06-14T14:53:31+00:00","dateModified":"2025-10-24T07:38:49+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/dctmping-a-documentum-repository-checker-utility\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"dctmping, A Documentum Repository Checker Utility"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d8563acfc6e604cce6507f45bac0ea1","name":"Middleware Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ddcae7ba0f9d1a0e7ae707f0e689e4a9c95bb48ec49c8e6d9cc86d43f4121cb6?s=96&d=mm&r=g","caption":"Middleware Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/middleware-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16411","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=16411"}],"version-history":[{"count":2,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16411\/revisions"}],"predecessor-version":[{"id":41208,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/16411\/revisions\/41208"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=16411"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=16411"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=16411"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=16411"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}