{"id":13864,"date":"2020-03-28T11:50:28","date_gmt":"2020-03-28T10:50:28","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/"},"modified":"2020-03-28T11:50:28","modified_gmt":"2020-03-28T10:50:28","slug":"documentum-d2-export-download-random-failure-with-wsctf-browser-plugin","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/","title":{"rendered":"Documentum &#8211; D2 Export\/Download random failure with wsctf browser plugin"},"content":{"rendered":"<p>The D2 clients were, until recently (D2 version 16.4 included), working by default with the java plugin mode and therefore, many actions were using a JVM on the client workstation. This setting can be controlled\/set in the &#8220;<em>WEB-INF\/classes\/settings.properties<\/em>&#8221; file of D2 applications (D2, D2-REST, D2-Smartview) and the default value was therefore &#8220;<em>browser.plugin.mode = java<\/em>&#8220;. Starting with D2 16.5, this was changed and the default value is now &#8220;<em>browser.plugin.mode = wsctf,thin<\/em>&#8220;, meaning that it will try to use\/load the wsctf (Web Socket Content Transfer Framework) and if it&#8217;s not possible it will fallback to the thin mode. This blog isn&#8217;t an introduction to the browser plugin mode, there would be a LOT to talk about but I needed to introduce a few things so the issue below will be clear\/understandable by everyone.<\/p>\n<p>&nbsp;<\/p>\n<p>So in a newly build environment on a K8s infrastructure, a user reported some random failures on D2 Export\/Download. This specific environment was built in HA in Kubernetes so we had 3 Content Servers pods, 4 D2 pods (WebLogic Managed Server), 2 D2-Config pods (WebLogic Managed Server), and some other components. The session stickiness was handled by the Ingress Controller using Cookies and this was working properly, the HA was also working properly. So, login\/logout\/browse\/search was fully working for all clients but when you started to Export\/Download a document, then some randomness appeared. The environment was using D2 16.5.1, it&#8217;s important because of the thing I mentioned above: it was therefore using the wsctf plugin (we didn&#8217;t change it). At first, I tried to replicate the issue using Google Chrome, log in to D2, find a document, right-click on it and select Export. From what I could see on the D2 logs, it was always working: I tried 20 times in a 10\/15 minutes period but each and every time, I could see the download request on the same WebLogic Managed Server that I was logged in. Therefore, on the 4 D2 pods I had, only 1 was used. Removing the cookies, restarting the Google Chrome browser and the same happened for another pod (no issue). So, what&#8217;s the issue then? Well actually, I wasn&#8217;t using the wsctf plugin on Chrome because it&#8217;s usually faster to use the thin mode and therefore that&#8217;s how I tried to replicate the issue but couldn&#8217;t. The logs of the download using the thin mode were like that:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [8,10,21,40,45,49]\">2020-03-28 11:20:39,226 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - START =====================================\n2020-03-28 11:20:39,227 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - HTTP Headers\nRemote : 10.10.10.10 (10-10-10-10.ingress-nginx.ingress-nginx.svc.cluster.local)\nLocale : en_US\nRequest Protocol : HTTP\/1.1\nRequest Method : GET\nContext Path : \/D2\nRequest URI : \/D2\/servlet\/Download\nRequest encoding : null\nRequest Parameters :\n        _docbase : Repo1\n        _locale : en\n        _password : ********\n        _timeZoneId : Europe\/Zurich\n        _username : morgan_patou\n        event_name : d2_export\n        format :\n        hasRelate : 1\n        id : 090f1234809aa823\n        uid : Repo1-1585394439230-morgan_patou-401674627\nRequest Headers :\n        Host : d2.domain.com\n        X-Request-ID : 50a051639dc2a3971cfc3d6cb9010738\n        X-Real-IP : 10.10.0.1\n        X-Forwarded-For : 10.10.0.1\n        X-Forwarded-Host : d2.domain.com\n        X-Forwarded-Port : 443\n        X-Forwarded-Proto : https\n        X-Original-URI : \/D2\/servlet\/Download?uid=Repo1-1585394439230-morgan_patou-401674627&amp;_docbase=Repo1&amp;_username=morgan_patou&amp;_password=DM_TICKET%3DEwxMwp2gMAoZlOVC...BMOE1HWXlJXCg%3D%3D&amp;_locale=en&amp;_timeZoneId=Europe%2FZurich&amp;id=090f1234809aa823&amp;format=&amp;event_name=d2_export&amp;_timeZoneId=Europe%2FZurich&amp;hasRelate=1\n        X-Scheme : https\n        upgrade-insecure-requests : 1\n        user-agent : Mozilla\/5.0 (Windows NT 10.0; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/80.0.3987.122 Safari\/537.36\n        sec-fetch-dest : iframe\n        accept : text\/html,application\/xhtml+xml,application\/xml;q=0.9,image\/webp,image\/apng,*\/*;q=0.8,application\/signed-exchange;v=b3;q=0.9\n        sec-fetch-site : same-origin\n        sec-fetch-mode : navigate\n        referer : https:\/\/d2.domain.com\/D2\/?docbase=Repo1&amp;locateId=090f1234809aa823\n        accept-encoding : gzip, deflate, br\n        accept-language : en-US,en;q=0.9\nCookies :\n        lastRepo : Repo1\n        locale : en_US\n        sessAcv : 1\n        https%3A%2F%2Fd2.domain.com%2FD2%2Fx3_portal%2Ftheme : %7B%22state%22%3A%7B%22id%22%3A%22s%3Aslate%22%2C%20%22file%22%3A%22s%3Aresources%2Fthemes%2Fslate%2Fcss%2Fxtheme-x3.css%22%7D%7D\n        D2_k8s_env1_sticky : 1585393439.816.1698.878338\n        JSESSIONID_D2_K8s_env1 : H04MOTyK_nAo4LXdEZlMoeCTMrq94rsx53ds2_3kuhKEG8240V9S!-1569294555\n        x-auto-271 : %7B%22state%22%3A%7B%22rowSel%22%3A%22i%3A7%22%7D%7D\n        sessExTm : 1585395180150\nHttp Session :\n        XSRF_TOKEN : 03c0e04906106d97cbe884a7d316deb168b1850959b_1572b22bbb360f265\n        CONTEXT : {Repo1-1585394439230-morgan_patou-401674627=com.emc.d2fs.models.context.Context@4d3e927a, Repo1-1585393445738-morgan_patou-1618912563=com.emc.d2fs.models.context.Context@589aaba3}\n        org.apache.shiro.web.session.HttpServletSession.HOST_SESSION_KEY : 10-10-10-10.ingress-nginx.ingress-nginx.svc.cluster.local\n2020-03-28 11:20:39,228 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - Standard Servlet :\n2020-03-28 11:20:40,642 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - c.e.d.a.c.documentset.D2DocumentSetSwitch     : D2DocumentSetSwitch.getDocumentSetList end: 0.000s\n2020-03-28 11:20:41,682 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.download.Download  : downloadFile:Test_document.docx\n2020-03-28 11:20:41,682 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.download.Download  : file stream is not null\n2020-03-28 11:20:41,687 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - Free memory=242.65753 MB. Total memory=1.0 GB.\n2020-03-28 11:20:41,687 UTC [INFO ] ([ACTIVE] ExecuteThread: '39' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - END (2.462s) =====================================<\/pre>\n<p>&nbsp;<\/p>\n<p>With the above, everything is fine and all communications go through the same D2 pod thanks to the stickiness. So what&#8217;s the issue then? To be sure, I tried the same thing with Internet Explorer: login\/logout\/browse\/search was also fully working, all targeting a single pod in the backend. However, when trying to Export\/Download, I could see on the D2 logs that the download request was actually triggered to any of the D2 pod, meaning the stickiness was lost for this specific type of request. While looking at the download logs, I could see the following:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [8,10,21,34,37]\">2020-03-28 11:23:16,734 UTC [INFO ] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - START =====================================\n2020-03-28 11:23:16,735 UTC [INFO ] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - HTTP Headers\nRemote : 10.10.10.10 (10-10-10-10.ingress-nginx.ingress-nginx.svc.cluster.local)\nLocale : en_US\nRequest Protocol : HTTP\/1.1\nRequest Method : GET\nContext Path : \/D2\nRequest URI : \/D2\/servlet\/Download\nRequest encoding : null\nRequest Parameters :\n        _docbase : Repo1\n        _locale : en\n        _password : ********\n        _timeZoneId : Europe\/Zurich\n        _username : morgan_patou\n        event_name : d2_export\n        format :\n        hasRelate : 1\n        id : 090f1234809aa823\n        uid : Repo1-1585394596738-morgan_patou-1829106889\nRequest Headers :\n        Host : d2.domain.com\n        X-Request-ID : 267f10747ab4e6df0b0b74c6be0e2f95\n        X-Real-IP : 10.10.0.1\n        X-Forwarded-For : 10.10.0.1\n        X-Forwarded-Host : d2.domain.com\n        X-Forwarded-Port : 443\n        X-Forwarded-Proto : https\n        X-Original-URI : \/D2\/servlet\/Download?uid=Repo1-1585394596738-morgan_patou-1829106889&amp;_docbase=Repo1&amp;_username=morgan_patou&amp;_password=DM_TICKET%3DEwxMwp2gMAoZlOVC...2UFK01ODR6dCg%3D%3D&amp;_locale=en&amp;_timeZoneId=Europe%2FZurich&amp;id=090f1234809aa823&amp;format=&amp;event_name=d2_export&amp;_timeZoneId=Europe%2FZurich&amp;hasRelate=1\n        X-Scheme : https\n        User-Agent : python-requests\/2.21.0\n        Accept-Encoding : gzip, deflate\n        Accept : *\/*\nHttp Session :\n2020-03-28 11:23:16,735 UTC [INFO ] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - Standard Servlet :\n2020-03-28 11:23:18,044 UTC [ERROR] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.web.services.D2fsContext    : {}\ncom.documentum.fc.client.DfServiceException: [DM_SESSION_E_LDAP_CHGPASS_USER]error:  \"The changepassword API failed with the following error: morgan_patou\"\n        at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:57)\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:329)\n        at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.applyForObject(NetwiseDocbaseRpcClient.java:672)\n        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection$8.evaluate(DocbaseConnection.java:1382)\n        ...\n        at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)\n2020-03-28 11:23:18,046 UTC [ERROR] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - c.emc.d2fs.dctm.aspects.InjectSessionAspect   : {}\ncom.documentum.fc.client.DfServiceException: [DM_SESSION_E_LDAP_CHGPASS_USER]error:  \"The changepassword API failed with the following error: morgan_patou\"\n        at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:57)\n        ...\n        at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)\n2020-03-28 11:23:18,046 UTC [WARN ] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.download.Download  : error in downloading file:com.emc.d2fs.exceptions.D2fsException: [DM_SESSION_E_LDAP_CHGPASS_USER]error:  \"The changepassword API failed with the following error: morgan_patou\"\n2020-03-28 11:23:18,056 UTC [ERROR] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download failed\ncom.emc.d2fs.exceptions.D2fsException: [DM_SESSION_E_LDAP_CHGPASS_USER]error:  \"The changepassword API failed with the following error: morgan_patou\"\n        at com.emc.d2fs.dctm.aspects.InjectSessionAspect.exceptionHandling(InjectSessionAspect.java:347)\n        at com.emc.d2fs.dctm.aspects.InjectSessionAspect.ajc$inlineAccessMethod$com_emc_d2fs_dctm_aspects_InjectSessionAspect$com_emc_d2fs_dctm_aspects_InjectSessionAspect$exceptionHandling(InjectSessionAspect.java:1)\n        at com.emc.d2fs.dctm.aspects.InjectSessionAspect.process(InjectSessionAspect.java:245)\n        at com.emc.d2fs.dctm.web.services.download.D2DownloadService.getDownloadObjectId(D2DownloadService.java:703)\n        at com.emc.d2fs.dctm.servlets.download.Download.processRequest(Download.java:166)\n        at com.emc.d2fs.dctm.servlets.D2HttpServlet.execute(D2HttpServlet.java:244)\n        ...\n2020-03-28 11:23:18,058 UTC [INFO ] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - Free memory=560.1069 MB. Total memory=1.0 GB.\n2020-03-28 11:23:18,058 UTC [INFO ] ([ACTIVE] ExecuteThread: '49' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download - END (1.324s) =====================================<\/pre>\n<p>&nbsp;<\/p>\n<p>That&#8217;s pretty different compared to the content of the download from Google Chrome, isn&#8217;t it? If you look carefully, you can see that there are Cookies in particular aren&#8217;t in the request made&#8230; One might think that&#8217;s it&#8217;s just IE that doesn&#8217;t provide it while Chrome does but actually, that&#8217;s not it. D2 is working in the same way (on this aspect at least&#8230;) for both Chrome and IE. In this case, the content of the log was different because for IE, the wsctf plugin was used. Therefore, the issue in this case is caused by the fact that the wsctf plugin doesn&#8217;t send the cookies in the download request while the thin mode does. That&#8217;s a bug, it shouldn&#8217;t happen. Initially, I wanted to open a SR with the OpenText Support to ask whether this is the expected behavior. However, a few minutes later, I found another related issue (see <a href=\"https:\/\/www.dbi-services.com\/blog\/documentum-d2-folder-structure-import-failure-with-wsctf-browser-plugin\/\" target=\"_blank\" rel=\"noopener noreferrer\">this blog<\/a>) which clearly showed that it\u2019s not.<\/p>\n<p>&nbsp;<\/p>\n<p>Since there is no cookies, the Ingress Controller doesn&#8217;t know which D2 pod should receive the request and therefore it&#8217;s a random distribution. Obviously, this isn&#8217;t just for an Ingress Controller, you would face exactly the same thing with a standard Load Balancer that is configured to use cookies stickiness.<\/p>\n<p>&nbsp;<\/p>\n<p>Is this really the issue? Well, not mandatorily&#8230; I mean yes it can be considered as the issue as the behavior is different between the wsctf and the thin mode, which in itself shouldn&#8217;t happen. However, the download request normally doesn&#8217;t need the session details because it&#8217;s a &#8220;standalone&#8221; request which could therefore normally be processed by any of the D2 pod running. There is one parameter that is often forgotten when setting up D2 and that is specific to the HA setup: the &#8220;loadBalancedContentServer&#8221; parameter inside the &#8220;WEB-INF\/classes\/D2FS.properties&#8221; file. This parameter is by default set to false but if you have more than one Content Server (so HA on the Repo layer), then you are supposed to set it to true. It&#8217;s often forgotten because keeping it to false will usually not cause much trouble, except under very specific circumstances. This parameter wasn&#8217;t set properly in this environment, so I just fixed it to solve this specific issue:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [5,7,10]\">[weblogic@wsd2-0 ~]$ cd $APPLICATIONS\n[weblogic@wsd2-0 apps]$\n[weblogic@wsd2-0 apps]$ d2fs=\"D2\/WEB-INF\/classes\/D2FS.properties\"\n[weblogic@wsd2-0 apps]$ grep loadBalancedContentServer ${d2fs}\nloadBalancedContentServer=false\n[weblogic@wsd2-0 apps]$\n[weblogic@wsd2-0 apps]$ sed -i 's,^loadBalancedContentServer=.*,loadBalancedContentServer=true,' ${d2fs}\n[weblogic@wsd2-0 apps]$\n[weblogic@wsd2-0 apps]$ grep loadBalancedContentServer ${d2fs}\nloadBalancedContentServer=true\n[weblogic@wsd2-0 apps]$<\/pre>\n<p>&nbsp;<\/p>\n<p>Once it&#8217;s corrected, redeploy D2 and then you should still see the same behavior in terms of wsctf download requests, meaning that the requests will be sent to any of the D2 pods with cookies. However, thanks to this parameter, the download requests should all succeed, even if the D2 pod handling it isn&#8217;t the one you are currently logged into and that&#8217;s because the login ticket is now global so it will be accepted by all Content Servers, no matter which one is used.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The D2 clients were, until recently (D2 version 16.4 included), working by default with the java plugin mode and therefore, many actions were using a JVM on the client workstation. This setting can be controlled\/set in the &#8220;WEB-INF\/classes\/settings.properties&#8221; file of D2 applications (D2, D2-REST, D2-Smartview) and the default value was therefore &#8220;browser.plugin.mode = java&#8220;. Starting [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197,525],"tags":[1889,443,478,129,1094,130],"type_dbi":[],"class_list":["post-13864","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-browser","tag-d2","tag-d2fs","tag-documentum","tag-plugin","tag-wsctf"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Documentum - D2 Export\/Download random failure with wsctf browser plugin - 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\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentum - D2 Export\/Download random failure with wsctf browser plugin\" \/>\n<meta property=\"og:description\" content=\"The D2 clients were, until recently (D2 version 16.4 included), working by default with the java plugin mode and therefore, many actions were using a JVM on the client workstation. This setting can be controlled\/set in the &#8220;WEB-INF\/classes\/settings.properties&#8221; file of D2 applications (D2, D2-REST, D2-Smartview) and the default value was therefore &#8220;browser.plugin.mode = java&#8220;. Starting [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-28T10:50:28+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=\"11 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\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Documentum &#8211; D2 Export\\\/Download random failure with wsctf browser plugin\",\"datePublished\":\"2020-03-28T10:50:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/\"},\"wordCount\":1009,\"commentCount\":0,\"keywords\":[\"browser\",\"D2\",\"D2FS\",\"Documentum\",\"Plugin\",\"wsctf\"],\"articleSection\":[\"Application integration &amp; Middleware\",\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/\",\"name\":\"Documentum - D2 Export\\\/Download random failure with wsctf browser plugin - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2020-03-28T10:50:28+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentum &#8211; D2 Export\\\/Download random failure with wsctf browser plugin\"}]},{\"@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":"Documentum - D2 Export\/Download random failure with wsctf browser plugin - 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\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/","og_locale":"en_US","og_type":"article","og_title":"Documentum - D2 Export\/Download random failure with wsctf browser plugin","og_description":"The D2 clients were, until recently (D2 version 16.4 included), working by default with the java plugin mode and therefore, many actions were using a JVM on the client workstation. This setting can be controlled\/set in the &#8220;WEB-INF\/classes\/settings.properties&#8221; file of D2 applications (D2, D2-REST, D2-Smartview) and the default value was therefore &#8220;browser.plugin.mode = java&#8220;. Starting [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/","og_site_name":"dbi Blog","article_published_time":"2020-03-28T10:50:28+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Documentum &#8211; D2 Export\/Download random failure with wsctf browser plugin","datePublished":"2020-03-28T10:50:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/"},"wordCount":1009,"commentCount":0,"keywords":["browser","D2","D2FS","Documentum","Plugin","wsctf"],"articleSection":["Application integration &amp; Middleware","Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/","url":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/","name":"Documentum - D2 Export\/Download random failure with wsctf browser plugin - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-03-28T10:50:28+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-export-download-random-failure-with-wsctf-browser-plugin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Documentum &#8211; D2 Export\/Download random failure with wsctf browser plugin"}]},{"@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\/13864","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=13864"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13864\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13864"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13864"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13864"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13864"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}