{"id":13767,"date":"2020-03-21T16:22:40","date_gmt":"2020-03-21T15:22:40","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/"},"modified":"2020-03-21T16:22:40","modified_gmt":"2020-03-21T15:22:40","slug":"documentum-d2-smartview-class-cast-exception","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/","title":{"rendered":"Documentum &#8211; D2-Smartview class cast exception"},"content":{"rendered":"<p>D2-Smartview is a new UI that OpenText now provides starting with the version 16 of D2. It&#8217;s a lightweight UI that can perform some of the actions that D2 does. The list of features will probably increase with time but at the moment, I guess it&#8217;s more for simple users that have very basic needs, consumer like roles mainly. An interesting thing is that with a small configuration, users can switch between D2 and D2-Smartview on the fly.<\/p>\n<p>&nbsp;<\/p>\n<p>The issue I wanted to talk about in this blog is a class cast exception that might while trying to download a document using D2-Smartview that has been deployed on a WebLogic Server:<\/p>\n<pre class=\"brush: java; gutter: true; first-line: 1; highlight: [5,6,7]\">2020-02-21 10:42:11,168 UTC [INFO ] ([ACTIVE] ExecuteThread: '30' for queue: 'weblogic.kernel.Default (self-tuning)') - c.e.d.a.c.documentset.D2DocumentSetSwitch     : D2DocumentSetSwitch.getDocumentSetList end: 0.000s\n2020-02-21 10:42:11,184 UTC [INFO ] ([ACTIVE] ExecuteThread: '30' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.utils.FormatUtils           : Compiled format pattern [a-zA-Z_-0-9]+{1,32}\n2020-02-21 10:42:11,405 UTC [INFO ] ([ACTIVE] ExecuteThread: '30' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.common.dctm.utils.DfServerUtil        : loadBalancedContentServer set to false\n2020-02-21 10:42:11,681 UTC [INFO ] ([ACTIVE] ExecuteThread: '95' for queue: 'weblogic.kernel.Default (self-tuning)') - c.e.d.d.w.services.config.D2X3ConfigService   : D2X3ConfigService.getAvailableWidgets end : 0.119s\n2020-02-21 10:42:11,903 UTC [ERROR] ([ACTIVE] ExecuteThread: '34' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Download could not parse request body\n2020-02-21 10:42:11,908 UTC [ERROR] ([ACTIVE] ExecuteThread: '34' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.d2fs.dctm.servlets.D2HttpServlet      : Request parsing failed\njava.lang.ClassCastException: weblogic.security.principal.WLSUserImpl cannot be cast to com.emc.d2fs.authc.HttpAuthPrincipal\n        at com.emc.d2fs.dctm.servlets.D2HttpContext.&lt;init&gt;(D2HttpContext.java:259)\n        at com.emc.d2fs.dctm.servlets.D2HttpServlet.doGetAndPost(D2HttpServlet.java:360)\n        at com.emc.d2fs.dctm.servlets.D2HttpServlet.doGet(D2HttpServlet.java:113)\n        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\n        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)\n        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)\n        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)\n        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)\n        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)\n        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3705)\n        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3672)\n        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:328)\n        at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)\n        at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)\n        at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)\n        at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2443)\n        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2291)\n        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2269)\n        at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1705)\n        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1665)\n        at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)\n        at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)\n        at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)\n        at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)\n        at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)\n        at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:652)\n        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)\n        at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)\n2020-02-21 10:42:11,931 UTC [ERROR] ([ACTIVE] ExecuteThread: '34' for queue: 'weblogic.kernel.Default (self-tuning)') - com.emc.documentum.rest.util.LogHelper        : LogId: 2516f8e0-f920-437c-86f3-502b3ec8ad14, Status: 500, code: E_INTERNAL_SERVER_ERROR, message: An internal server error occurs.\njava.lang.ClassCastException: weblogic.security.principal.WLSUserImpl cannot be cast to com.emc.d2fs.authc.HttpAuthPrincipal\n        at com.emc.d2fs.dctm.servlets.D2HttpContext.&lt;init&gt;(D2HttpContext.java:259)\n        at com.emc.d2fs.dctm.servlets.D2HttpServlet.doGetAndPost(D2HttpServlet.java:360)\n        at com.emc.d2fs.dctm.servlets.D2HttpServlet.doGet(D2HttpServlet.java:113)\n        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)\n        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)\n        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)\n        at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)\n        at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)\n        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)\n        at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)\n        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3705)\n        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3672)\n        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:328)\n        at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)\n        at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)\n        at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)\n        at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2443)\n        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2291)\n        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2269)\n        at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1705)\n        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1665)\n        at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:272)\n        at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:352)\n        at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:337)\n        at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:57)\n        at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)\n        at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:652)\n        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:420)\n        at weblogic.work.ExecuteThread.run(ExecuteThread.java:360)\n2020-02-21 10:42:13,972 UTC [ERROR] ([ACTIVE] ExecuteThread: '25' for queue: 'weblogic.kernel.Default (self-tuning)') - c.e.d.d.w.s.b.D2BravaCSRAnnotationService     : Invalid object id:\n2020-02-21 10:42:13,978 UTC [ERROR] ([ACTIVE] ExecuteThread: '25' for queue: 'weblogic.kernel.Default (self-tuning)') - c.e.d.d.d.i.D2BravaCSRAnnotationsManagerImpl  : Error getting changemark for document 090f123480003979<\/pre>\n<p>&nbsp;<\/p>\n<p>D2-Smartview is using, in some part, REST services and therefore you might find several similarities between D2-REST and D2-Smartview for example. If you are familiar with the D2-REST application on WebLogic, you might know that OpenText usually asks you to remove a certain set of JARs, then disable some security, aso&#8230; It&#8217;s not surprising that the documentation for D2-Smartview also asks the same kind of thing. For D2-REST, I personally never had to remove JARs (except <a href=\"https:\/\/www.dbi-services.com\/blog\/documentum-nosuchmethoderror-on-setresourcebundle-with-d2-rest-16-4-on-weblogic\/\" target=\"_blank\" rel=\"noopener noreferrer\">this one<\/a>, which isn&#8217;t in the list from OpenText anyway) and I never had to disable the basic authentication. This is because I could always rely on LDAP authentication. Most companies rely on LDAP nowadays and therefore you usually don&#8217;t need to disable WebLogic basic authentication on D2-REST because you can just configure WebLogic to use the LDAP Server for authentication and D2-REST will use the same account from the Repository (assuming it is also integrated with the LDAP).<\/p>\n<p>&nbsp;<\/p>\n<p>Therefore, when I started to do some engineering on D2-Smartview, to deploy and test it, I obviously didn&#8217;t follow all the documentation provided by OpenText, only the parts that I usually do for D2-REST because I know that&#8217;s sufficient. These are the things that OpenText asks you to do for D2-Smartview 16.5.1 that I simply ignored:<\/p>\n<ul>\n<li>Disable web service annotation scan<\/li>\n<li>Add &#8220;<em>-Dweblogic.servlet.DIDisabled=true<\/em>&#8221; to JVM parameters of the Managed Server<\/li>\n<li>Remove JARs files: <em>jsr*.jar, stax-api-*.jar, stax2-api-*.jar, xml-apis-*.jar, xmlParserAPIs-*.jar<\/em><\/li>\n<li>Disable WebLogic basic authentication: <em>&lt;enforce-valid-basic-auth-credentials&gt;false&lt;\/enforcevalid-basic-auth-credentials&gt;<\/em><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>With the above ignored, I could deploy successfully D2-Smartview 16.5.1. The login was working properly with my LDAP account, I could browse the repository, perform searches, see properties of documents, aso&#8230; However, there was one thing not working: the download of document which failed with the above exception. As you can probably tell yourself, the exception is related to class cast exception from WebLogic principal (<em>weblogic.security.principal.WLSUserImpl<\/em>) to D2-Smartview principal (<em>com.emc.d2fs.authc.HttpAuthPrincipal<\/em>). Therefore, this was most probably linked to the basic authentication that I kept enabled just like for D2-REST. It looked like for D2-Smartview, it was really needed to disable it.<\/p>\n<p>&nbsp;<\/p>\n<p>Usually, I don&#8217;t like to disable security because you never know&#8230; This is especially true for the WebLogic basic authentication because this configuration applies to the whole WebLogic Domain! OpenText claims that disabling the basic authentication on WebLogic isn&#8217;t a security issue for their applications (DA, D2, D2-Config, D2-REST, D2-Smartview, d2ls, XMLViewer, DFS, &#8230;) because each of these handle the authentication directly. However, at some point in the future, some custom application might be deployed on that domain that expected WebLogic to perform the authentication so you might end-up with security holes. Unfortunately for D2-Smartview, it looks like there is no way around it at the moment (contrary to D2-REST), so disabling the basic authentication is needed if you expect it to work fully:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1; highlight: [13,15,16,17]\">[weblogic@ws-0 ~]$ stopDOMAIN\n\nThe server 'msDA-01' has been stopped successfully.\nThe server 'msD2Conf-01' has been stopped successfully.\nThe server 'msD2SV-01' has been stopped successfully.\nThe server 'msD2-01' has been stopped successfully.\nThe server 'AdminServer' has been stopped successfully.\nThe NodeManager has been stopped successfully.\n\n[weblogic@ws-0 ~]$\n[weblogic@ws-0 ~]$ grep -A1 \"valid-basic\" $DOMAIN_HOME\/config\/config.xml\n[weblogic@ws-0 ~]$\n[weblogic@ws-0 ~]$ sed -i 's,.*&lt;\/security-configuration&gt;,    &lt;enforce-valid-basic-auth-credentials&gt;false&lt;\/enforce-valid-basic-auth-credentials&gt;n&amp;,' $DOMAIN_HOME\/config\/config.xml\n[weblogic@ws-0 ~]$\n[weblogic@ws-0 ~]$ grep -A1 \"valid-basic\" $DOMAIN_HOME\/config\/config.xml\n    &lt;enforce-valid-basic-auth-credentials&gt;false&lt;\/enforce-valid-basic-auth-credentials&gt;\n  &lt;\/security-configuration&gt;\n[weblogic@ws-0 ~]$\n[weblogic@ws-0 ~]$ startDOMAIN\n\nThe NodeManager has been started successfully.\nThe server 'AdminServer' has been started successfully.\nThe server 'msDA-01' has been started successfully.\nThe server 'msD2Conf-01' has been started successfully.\nThe server 'msD2SV-01' has been started successfully.\nThe server 'msD2-01' has been started successfully.\n\n[weblogic@ws-0 ~]$<\/pre>\n<p>&nbsp;<\/p>\n<p>As you can see above, I updated the config.xml directly but the preferred way to do it is using WLST. There are several explanations on that on the internet. Once that&#8217;s done, the download of files is then working as expected. Maybe OpenText will change the source code so that it doesn&#8217;t need that at some point in the future but until then at least, no real other solution. The other three requirements from the documentation are still not in place on my side and I didn&#8217;t find anything not working so far so I guess I will just continue to ignore them (especially the &#8220;DIDisabled&#8221; one).<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>D2-Smartview is a new UI that OpenText now provides starting with the version 16 of D2. It&#8217;s a lightweight UI that can perform some of the actions that D2 does. The list of features will probably increase with time but at the moment, I guess it&#8217;s more for simple users that have very basic needs, [&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":[1786,995,1873,443,1874,129,647],"type_dbi":[],"class_list":["post-13767","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-16-5","tag-authentication","tag-basic","tag-d2","tag-d2-smartview","tag-documentum","tag-weblogic"],"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-Smartview class cast exception - 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-smartview-class-cast-exception\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentum - D2-Smartview class cast exception\" \/>\n<meta property=\"og:description\" content=\"D2-Smartview is a new UI that OpenText now provides starting with the version 16 of D2. It&#8217;s a lightweight UI that can perform some of the actions that D2 does. The list of features will probably increase with time but at the moment, I guess it&#8217;s more for simple users that have very basic needs, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-21T15:22:40+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=\"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\\\/documentum-d2-smartview-class-cast-exception\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Documentum &#8211; D2-Smartview class cast exception\",\"datePublished\":\"2020-03-21T15:22:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/\"},\"wordCount\":750,\"commentCount\":0,\"keywords\":[\"16.5\",\"Authentication\",\"basic\",\"D2\",\"D2-Smartview\",\"Documentum\",\"WebLogic\"],\"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-smartview-class-cast-exception\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/\",\"name\":\"Documentum - D2-Smartview class cast exception - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2020-03-21T15:22:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-d2-smartview-class-cast-exception\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentum &#8211; D2-Smartview class cast exception\"}]},{\"@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-Smartview class cast exception - 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-smartview-class-cast-exception\/","og_locale":"en_US","og_type":"article","og_title":"Documentum - D2-Smartview class cast exception","og_description":"D2-Smartview is a new UI that OpenText now provides starting with the version 16 of D2. It&#8217;s a lightweight UI that can perform some of the actions that D2 does. The list of features will probably increase with time but at the moment, I guess it&#8217;s more for simple users that have very basic needs, [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/","og_site_name":"dbi Blog","article_published_time":"2020-03-21T15:22:40+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Documentum &#8211; D2-Smartview class cast exception","datePublished":"2020-03-21T15:22:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/"},"wordCount":750,"commentCount":0,"keywords":["16.5","Authentication","basic","D2","D2-Smartview","Documentum","WebLogic"],"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-smartview-class-cast-exception\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/","url":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/","name":"Documentum - D2-Smartview class cast exception - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2020-03-21T15:22:40+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-d2-smartview-class-cast-exception\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Documentum &#8211; D2-Smartview class cast exception"}]},{"@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\/13767","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=13767"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/13767\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=13767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=13767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=13767"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=13767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}