{"id":43521,"date":"2026-03-22T09:51:00","date_gmt":"2026-03-22T08:51:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=43521"},"modified":"2026-03-22T08:32:36","modified_gmt":"2026-03-22T07:32:36","slug":"dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/","title":{"rendered":"Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time"},"content":{"rendered":"\n<p>At the end of last year, I published a <a href=\"https:\/\/www.dbi-services.com\/blog\/dctm-d2-sso-through-otds-fails-with-dm_license_e_invalid_license\/\" target=\"_blank\" rel=\"noreferrer noopener\">first blog<\/a> about a DM_LICENSE_E_INVALID_LICENSE error in D2 SSO login through OTDS. The root cause in that previous post was a duplicate user with one lowercase and one uppercase <strong><em>user_login_name<\/em><\/strong>. However, I did mention that there can be several reasons for that error. In this blog, I will describe another such case.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-1-symptoms-in-d2-logs\">1. Symptoms in D2 logs<\/h2>\n\n\n\n<p>The generated D2 logs associated with this new issue are almost exactly the same. The only difference is that the Repository returns &#8220;<em><strong>null<\/strong><\/em>&#8221; as the userid (<em><strong>user_name<\/strong><\/em>). See the message &#8220;<em><strong>Authentication failed for user null with docbase REPO_NAME<\/strong><\/em>&#8220;. This wasn&#8217;t the case in the other blog post:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; highlight: [4,5,15,16,17,21,23,24,25,26,27,28,29,30,31,32,33,34,72]; title: ; notranslate\" title=\"\">\n&#x5B;tomcat@d2-0 logs]$ cat D2.log\n...\n2025-12-08 12:21:14,784 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-47) - c.emc.x3.portal.server.X3HttpSessionListener  : Created http session 8531D373A3EA12A398B158AF656E7D20\n2025-12-08 12:21:14,784 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : No user name on the Http session yet\n2025-12-08 12:21:14,785 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : No access_token found in Http request or Cookie Redirecting to OTDS Server\n2025-12-08 12:21:14,786 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified scheme : https\n2025-12-08 12:21:14,786 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server name : d2.domain.com\n2025-12-08 12:21:14,787 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server port : 443\n2025-12-08 12:21:14,787 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Built server host is : https:\/\/d2.domain.com:443\n2025-12-08 12:21:14,788 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] header name=Host, value=d2.domain.com\n2025-12-08 12:21:14,789 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderValueSize: 8192\n2025-12-08 12:21:14,792 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] validating the input valued2.domain.com\n2025-12-08 12:21:14,793 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified host : d2.domain.com\n2025-12-08 12:21:14,794 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Overall base URL built : https:\/\/d2.domain.com\/D2\n2025-12-08 12:21:14,795 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : Redirection url post encoding - https%3A%2F%2Fd2.domain.com%2FD2%2Fd2_otds.html%3ForigUrl%3D%2FD2%2F\n2025-12-08 12:21:14,797 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OAUTH final login sendRedirect URL : https:\/\/otds-mfa.domain.com\/otdsws\/oauth2\/auth?response_type=token&amp;client_id=dctm-ns-d2&amp;redirect_uri=https%3A%2F%2Fd2.domain.com%2FD2%2Fd2_otds.html%3ForigUrl%3D%2FD2%2F&amp;logon_appname=Documentum+Client+CE+23.4\n2025-12-08 12:21:14,798 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : Sending redirection as it&#039;s not a rpc call : https:\/\/otds-mfa.domain.com\/otdsws\/oauth2\/auth?response_type=token&amp;client_id=dctm-ns-d2&amp;redirect_uri=https%3A%2F%2Fd2.domain.com%2FD2%2Fd2_otds.html%3ForigUrl%3D%2FD2%2F&amp;logon_appname=Documentum+Client+CE+23.4\n2025-12-08 12:21:15,018 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderKeySize: 256\n2025-12-08 12:21:15,018 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderValueSize: 8192\n2025-12-08 12:21:15,020 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : No user name on the Http session yet\n2025-12-08 12:21:15,021 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : Found access_token on Http Cookie, invalidating the cookie by setting maxAge 0\n2025-12-08 12:21:15,022 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : setting the cookie as secure as its a https request\n2025-12-08 12:21:15,024 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OTDS responded with a oauth token\n2025-12-08 12:21:15,025 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : ------ Begin getUntrustedJwtHeader : eyJraWQiOiI1YjM4...oSD8Xh3vVmkekcA\n2025-12-08 12:21:15,026 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : getUntrustedJwtHeader oauthTokenWithoutSignature : eyJraWQiOiI1YjM4...i1xYWN0LWQyIn0.\n2025-12-08 12:21:15,614 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : ------ Begin validateOTDSTokenClaims : MYUSERID\n2025-12-08 12:21:15,615 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  :  validateOTDSTokenClaims for user : MYUSERID , OTDS : currenttime: 1765196475615 expirationtime: 1765200074000\n2025-12-08 12:21:15,615 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : ------ End validateOTDSTokenClaims : MYUSERID\n2025-12-08 12:21:15,615 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : PublicKey for Key id : 5b38b...bf487 exists\n2025-12-08 12:21:15,617 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  :  OTDS Deafault Repository from shiro configured : REPO_NAME\n2025-12-08 12:21:15,617 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : generating DM_Ticket for user : MYUSERID in Repository : REPO_NAME\n2025-12-08 12:21:16,522 UTC &#x5B;ERROR] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OAuth Token Error occurred while generating a DCTM MultiUse Ticket for user  : MYUSERID\n2025-12-08 12:21:16,522 UTC &#x5B;ERROR] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OAuth Token Error please validate the OTDS Config of user exists in Repository\ncom.documentum.fc.client.DfAuthenticationException: &#x5B;DM_SESSION_E_AUTH_FAIL]error:  &quot;Authentication failed for user null with docbase REPO_NAME.&quot;\n        at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:52)\n        at com.documentum.fc.client.impl.connection.docbase.MessageEntry.getException(MessageEntry.java:39)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseMessageManager.getException(DocbaseMessageManager.java:137)\n        at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.checkForMessages(NetwiseDocbaseRpcClient.java:332)\n        at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.applyForObject(NetwiseDocbaseRpcClient.java:680)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection$8.evaluate(DocbaseConnection.java:1572)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.evaluateRpc(DocbaseConnection.java:1272)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.applyForObject(DocbaseConnection.java:1564)\n        at com.documentum.fc.client.impl.docbase.DocbaseApi.authenticateUser(DocbaseApi.java:1894)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.authenticate(DocbaseConnection.java:460)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.open(DocbaseConnection.java:140)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.&lt;init&gt;(DocbaseConnection.java:109)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.&lt;init&gt;(DocbaseConnection.java:69)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnectionFactory.newDocbaseConnection(DocbaseConnectionFactory.java:32)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnectionManager.createNewConnection(DocbaseConnectionManager.java:202)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnectionManager.getDocbaseConnection(DocbaseConnectionManager.java:132)\n        at com.documentum.fc.client.impl.session.SessionFactory.newSession(SessionFactory.java:24)\n        ...\n        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)\n        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)\n        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)\n        at java.base\/java.lang.Thread.run(Thread.java:840)\n2025-12-08 12:21:16,524 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : redirectToErrorPage : Redirecting to Error Page as Login failed for user : null and exception : {}\ncom.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter$1: Authentication failed for user null with repository REPO_NAME.\n        at com.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter.validateTokenAndGetUserId(X3OTDSAuthenticationFilter.java:1167)\n        at com.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter.onAccessDenied(X3OTDSAuthenticationFilter.java:293)\n        at org.apache.shiro.web.filter.AccessControlFilter.onAccessDenied(AccessControlFilter.java:133)\n        at org.apache.shiro.web.filter.AccessControlFilter.onPreHandle(AccessControlFilter.java:162)\n        at org.apache.shiro.web.filter.PathMatchingFilter.isFilterChainContinued(PathMatchingFilter.java:223)\n        at org.apache.shiro.web.filter.PathMatchingFilter.preHandle(PathMatchingFilter.java:198)\n        ...\n        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)\n        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)\n        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)\n        at java.base\/java.lang.Thread.run(Thread.java:840)\n2025-12-08 12:21:16,524 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : Adding the LicenseException to the Session : DM_SESSION_E_AUTH_FAIL\n2025-12-08 12:21:16,526 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified scheme : https\n2025-12-08 12:21:16,526 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server name : d2.domain.com\n2025-12-08 12:21:16,526 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server port : 443\n2025-12-08 12:21:16,528 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Built server host is : https:\/\/d2.domain.com:443\n2025-12-08 12:21:16,529 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] header name=Host, value=d2.domain.com\n2025-12-08 12:21:16,530 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderValueSize: 8192\n2025-12-08 12:21:16,531 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] validating the input valued2.domain.com\n2025-12-08 12:21:16,532 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified host : d2.domain.com\n2025-12-08 12:21:16,533 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Overall base URL built : https:\/\/d2.domain.com\/D2\n2025-12-08 12:21:16,534 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  :  D2 redirecting to errorPage JSP  : https:\/\/d2.domain.com\/D2\/errors\/authenticationError.jsp\n2025-12-08 12:21:16,567 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderKeySize: 256\n2025-12-08 12:21:16,567 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderValueSize: 8192\n2025-12-08 12:21:16,568 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : No LicenseExcepton found on HttpSession hence not Redirectling to License ErrorPage\n2025-12-08 12:21:16,571 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter :  Selected Repository : REPO_NAME\n2025-12-08 12:21:16,573 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderKeySize: 256\n2025-12-08 12:21:16,574 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; \/D2\/HTTPUtilities] MaxHeaderValueSize: 8192\n2025-12-08 12:21:16,578 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-26) - c.emc.x3.portal.server.X3HttpSessionListener  : Expired Http session id : 8531D373A3EA12A398B158AF656E7D20\n2025-12-08 12:21:16,578 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - com.emc.x3.server.context.ContextManager      : Create a new context manager\n...\n&#x5B;tomcat@d2-0 logs]$\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-2-checking-the-repository-authentication-trace\">2. Checking the Repository authentication trace<\/h2>\n\n\n\n<p>As usual, the next step is to check the Repository logs with the authentication trace enabled:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; highlight: [4,9,12,13,14,15]; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 ~]$ cat $DOCUMENTUM\/dba\/log\/$DOCBASE_NAME.log\n...\n2025-12-08T12:21:16.235912      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Entering RPC AUTHENTICATE_USER\n2025-12-08T12:21:16.236052      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start Authentication : LOGON_NAME=MYUSERID, DOMAIN_NAME=, OS_LOGON_NAME=tomcat, OS_LOGON_DOMAIN=, ASSUME_USER=0, TRUSTED_LOGIN_ALLOWED=1, PRINCIPAL_AUTH=0, DO_SET_LOCALE=0, RECONNECT=0, CLIENT_TOKEN=&#x5B;-36, 8, 66, 12, 89, 102, -85, -11, 6, -115, -34, -68, -123, 11, 100]\n2025-12-08T12:21:16.236115      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start Authenticate Client Instance\n2025-12-08T12:21:16.236215      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start Verify Signature, Client : dfc_327WHMY40Mglbp4taDgajZEM39Lc , Host : d2-0.d2.dctm-ns.svc.cluster.local\n2025-12-08T12:21:16.244603      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  End Verify Signature, Client : dfc_327WHMY40Mglbp4taDgajZEM39Lc , Host : d2-0.d2.dctm-ns.svc.cluster.local\n2025-12-08T12:21:16.244657      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  End Authenticate Client Instance\n2025-12-08T12:21:16.303325      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start-AuthenticateUser: ClientHost(d2-0.d2.dctm-ns.svc.cluster.local), LogonName(null), LogonOSName(tomcat), LogonOSDomain(), UserExtraDomain(), ServerDomain()\n2025-12-08T12:21:16.303410      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start-AuthenticateUserName:\n2025-12-08T12:21:16.303442      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  dmResolveNamesForCredentials: auth_protocol()\n2025-12-08T12:21:16.305698      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  &#x5B;DM_USER_E_NOT_DOCUMENTUM_USER]error:  &quot;User null does not exist in the docbase&quot;\n2025-12-08T12:21:16.305720      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  End-AuthenticateUserName: dm_user.user_login_domain(), Result: 0\n2025-12-08T12:21:16.305730      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Not Found dm_user.user_login_name(null), dm_user.user_login_domain()\n2025-12-08T12:21:16.519331      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Final Auth Result=F, LOGON_NAME=null, AUTHENTICATION_LEVEL=1, OS_LOGON_NAME=tomcat, OS_LOGON_DOMAIN=, CLIENT_HOST_NAME=d2-0.d2.dctm-ns.svc.cluster.local, CLIENT_HOST_ADDR=172.1.1.1, USER_LOGON_NAME_RESOLVED=1, AUTHENTICATION_ONLY=0, USER_NAME=, USER_OS_NAME=null, USER_LOGIN_NAME=null, USER_LOGIN_DOMAIN=, USER_EXTRA_CREDENTIAL&#x5B;0]=, USER_EXTRA_CREDENTIAL&#x5B;1]=, USER_EXTRA_CREDENTIAL&#x5B;2]=e2, USER_EXTRA_CREDENTIAL&#x5B;3]=, USER_EXTRA_CREDENTIAL&#x5B;4]=, USER_EXTRA_CREDENTIAL&#x5B;5]=, SERVER_SESSION_ID=0101234580c77e96, AUTH_BEGIN_TIME=Mon Dec  8 12:21:16 2025, AUTH_END_TIME=Mon Dec  8 12:21:16 2025, Total elapsed time=0 seconds\n2025-12-08T12:21:16.519359      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Exiting RPC AUTHENTICATE_USER\n...\n&#x5B;dmadmin@cs-0 ~]$\n<\/pre><\/div>\n\n\n<p>There is one thing that is quite strange in these logs. If you look at the beginning, it traces the authentication for &#8220;<strong><em>MYUSERID<\/em><\/strong>&#8220;. But then, in the middle of the process, that <em><strong>user_name<\/strong><\/em> becomes &#8220;<em><strong>null<\/strong><\/em>&#8220;. I do not recall seeing that behavior before, so I started investigating what might have caused it.<\/p>\n\n\n\n<p>The account &#8220;<em><strong>MYUSERID<\/strong><\/em>&#8221; existed in the Repository. This issue occurred on the same application as in the previous blog post, but this time in the TEST\/QA environment (instead of DEV). The same OTDS and users were present, so my account was definitely there (without duplicates in TEST\/QA).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-3-investigating-otds-authentication-logs\">3. Investigating OTDS authentication logs<\/h2>\n\n\n\n<p>Since the <em><strong>dm_user<\/strong><\/em> object had a &#8220;<em><strong>user_source<\/strong><\/em>&#8221; of <em><strong>OTDS<\/strong><\/em>, I then checked the OTDS Authentication log file from the JMS. For this Documentum 23.4 version, the log file was &#8220;<em><strong>$JMS_HOME\/logs\/otdsauth.log<\/strong><\/em>&#8220;. Starting from version 25.4, this log file is located inside &#8220;<em><strong>$DOCUMENTUM\/dba\/log<\/strong><\/em>&#8221; instead:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; highlight: [3,21]; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 ~]$ cat $JMS_HOME\/logs\/otdsauth.log\n...\n2025-12-08 11:49:46,106 UTC ERROR &#x5B;] (https-jsse-nio-9082-exec-36) Thread&#x5B;https-jsse-nio-9082-exec-36,5,main] java.io.IOException: Unable to tunnel through proxy. Proxy returns &quot;HTTP\/1.1 502 Bad Gateway&quot;\n        at java.base\/sun.net.www.protocol.http.HttpURLConnection.doTunneling0(HttpURLConnection.java:2311)\n        at java.base\/sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2181)\n        at java.base\/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)\n        at java.base\/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1465)\n        at java.base\/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1436)\n        at java.base\/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220)\n        at com.documentum.cs.otds.OTDSAuthenticationServlet.validatePassword(OTDSAuthenticationServlet.java:275)\n        at com.documentum.cs.otds.OTDSAuthenticationServlet.doPost(OTDSAuthenticationServlet.java:175)\n        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)\n        ...\n        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740)\n        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)\n        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)\n        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)\n        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n        at java.base\/java.lang.Thread.run(Thread.java:840)\n\n2025-12-08 12:21:16,302 UTC ERROR &#x5B;] (https-jsse-nio-9082-exec-50) Exception while fetching certificates from jwks url\n&#x5B;dmadmin@cs-0 ~]$\n<\/pre><\/div>\n\n\n<p>The first error message (11:49) occurred about 30 minutes before the authentication attempt. On the other hand, the last line (12:21) is directly linked to the problem according to its timestamp. This indicates that the Documentum Server was trying to fetch the <em><strong>JWKS certificate<\/strong><\/em>. This happens when the OTDS Authentication Servlet is configured with the &#8220;<em><strong>auto_cert_refresh=true<\/strong><\/em>&#8221; parameter (see the &#8220;<em><strong>otdsauth.properties<\/strong><\/em>&#8221; file).<\/p>\n\n\n\n<p>This forces the Documentum Server to contact the OTDS Server in order to retrieve the correct or current SSL certificate to use. However, that request failed. Even though it is not explicitly written, it is easy to deduce that the first error, related to a proxy communication issue, is the root cause.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-4-checking-newly-added-proxy-and-correcting-it\">4. Checking newly added proxy and correcting it<\/h2>\n\n\n\n<p>As far as I knew, there should not have been any proxy configured on Documentum, since all components are internal to the customer and located within the same network. However, when checking the startup logs of the JMS, I noticed that a new proxy configuration had recently been added when the Tomcat process restarted less than two hours earlier:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; highlight: [3,4,5,6]; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 ~]$ grep proxy $JMS_HOME\/logs\/catalina.out\n...\n2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyHost=proxy.domain.com\n2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyPort=2010\n2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttps.proxyHost=proxy.domain.com\n2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttps.proxyPort=2011\n...\n&#x5B;dmadmin@cs-0 ~]$\n<\/pre><\/div>\n\n\n<p>After checking with the relevant teams, it turned out that this issue was not really related to Documentum itself. Someone had simply restarted the JMS after adding proxy settings as new JVM parameters while testing an external service that required internet access. Yes, directly in TEST\/QA without validating in DEV first &#8211; it happens apparently.<\/p>\n\n\n\n<p>However, since no exceptions were configured through the <em><strong>no_proxy<\/strong><\/em> setting (&#8220;<em><strong>-Dhttp.nonProxyHosts<\/strong><\/em>&#8221; JVM parameter), it meant that 100% of the requests initiated by the JVM were forwarded to the proxy. That proxy had no knowledge of the OTDS server (which is expected), so the communication simply failed.<\/p>\n\n\n\n<p>After correcting the proxy configuration (either by removing it or by adding all internal domains to the <em><strong>no_proxy<\/strong><\/em> setting), the JVM was able to communicate with OTDS again. As a consequence, the D2 SSO started working successfully and the environment was back &#8220;online&#8221; for all testers. These two blog posts clearly demonstrate that just because D2 displays an error, it doesn&#8217;t mean that the real root cause is obvious. Careful investigation and analysis of the log files is always essential.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>At the end of last year, I published a first blog about a DM_LICENSE_E_INVALID_LICENSE error in D2 SSO login through OTDS. The root cause in that previous post was a duplicate user with one lowercase and one uppercase user_login_name. However, I did mention that there can be several reasons for that error. In this blog, [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[525],"tags":[443,3755,2609,903,910,445],"type_dbi":[],"class_list":["post-43521","post","type-post","status-publish","format-standard","hentry","category-enterprise-content-management","tag-d2","tag-dm_license_e_invalid_license","tag-documentum-2","tag-jms","tag-proxy","tag-sso"],"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>Dctm - Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time - dbi Blog<\/title>\n<meta name=\"description\" content=\"A DM_LICENSE_E_INVALID_LICENSE error in Documentum D2 doesn&#039;t always indicate a license issue. Here is an example of a JMS mis-configuration.\" \/>\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\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dctm - Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time\" \/>\n<meta property=\"og:description\" content=\"A DM_LICENSE_E_INVALID_LICENSE error in Documentum D2 doesn&#039;t always indicate a license issue. Here is an example of a JMS mis-configuration.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-22T08:51:00+00:00\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time\",\"datePublished\":\"2026-03-22T08:51:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\"},\"wordCount\":676,\"commentCount\":0,\"keywords\":[\"D2\",\"DM_LICENSE_E_INVALID_LICENSE\",\"Documentum\",\"jms\",\"Proxy\",\"SSO\"],\"articleSection\":[\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\",\"name\":\"Dctm - Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2026-03-22T08:51:00+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"description\":\"A DM_LICENSE_E_INVALID_LICENSE error in Documentum D2 doesn't always indicate a license issue. Here is an example of a JMS mis-configuration.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time\"}]},{\"@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\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\/\/blog.dbi-services.com\/author\/morgan-patou\/\",\"https:\/\/x.com\/MorganPatou\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dctm - Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time - dbi Blog","description":"A DM_LICENSE_E_INVALID_LICENSE error in Documentum D2 doesn't always indicate a license issue. Here is an example of a JMS mis-configuration.","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\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/","og_locale":"en_US","og_type":"article","og_title":"Dctm - Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time","og_description":"A DM_LICENSE_E_INVALID_LICENSE error in Documentum D2 doesn't always indicate a license issue. Here is an example of a JMS mis-configuration.","og_url":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/","og_site_name":"dbi Blog","article_published_time":"2026-03-22T08:51:00+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time","datePublished":"2026-03-22T08:51:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/"},"wordCount":676,"commentCount":0,"keywords":["D2","DM_LICENSE_E_INVALID_LICENSE","Documentum","jms","Proxy","SSO"],"articleSection":["Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/","url":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/","name":"Dctm - Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2026-03-22T08:51:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"description":"A DM_LICENSE_E_INVALID_LICENSE error in Documentum D2 doesn't always indicate a license issue. Here is an example of a JMS mis-configuration.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time"}]},{"@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\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/blog.dbi-services.com\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43521","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\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=43521"}],"version-history":[{"count":2,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43521\/revisions"}],"predecessor-version":[{"id":43524,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/43521\/revisions\/43524"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=43521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=43521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=43521"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=43521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}