Blogs

Blogs

Integrating Alfresco Web Client as a set of portlets with Liferay

 In ten steps, you could be able to set Alfresco (3.1 or above) web client as a set of portlets in Liferay portal (5.2 or above). It is simple for Do-It-Yourselfers.

Download URL:  liferay.cignex.com/palm_tree/0387/sso/liferay/alfresco-portlet

Demo URL:  liferay.cignex.com 

1) Get Alfresco web client application: alfresco.war (from Alfresco Tomcat bundle)

2) Unzip it to $ALFRESCO_HOME (any folder in your local machine, e.g., new folder /Alfresco)

3) Update dir.root in $ALFRESCO_HOME/ WEB-INF/classes/alfresco/repository.propertes.

dir.root=../../alf_data

4) Create a database alfresco in MySQL

drop database if exists alfresco;

create database alfresco character set utf8;

grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;

grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option; 

5) Remove the file $ALFRESCO_HOME/WEB-INF/lib/portlet-api-lib.jar 

6) Add /WEB-INF/faces-config.xml to the faces config files list at $ALFRESCO_HOME/WEB-INF/web.xml like

<context-param>

      <param-name>javax.faces.CONFIG_FILES</param-name>

      <param-value>/WEB-INF/faces-config.xml,/WEB-INF/faces-config-app.xml,/WEB-INF/faces-config-beans.xml,/WEB-INF/faces-config-navigation.xml,/WEB-INF/faces-config-common.xml,/WEB-INF/faces-config-repo.xml,/WEB-INF/faces-config-wcm.xml,/WEB-INF/faces-config-custom.xml</param-value>

</context-param>

7) Download and add files: faces-config.xml, liferay-display.xml, liferay-portlet.xml, portlet.xml to $ALFRESCO_HOME/WEB-INF

8) Create a  folder license under $ALFRESCO_HOME /WEB-INF/classes/alfresco/extension and add license file to  $ALFRESCO_HOME /WEB-INF/classes/alfresco/extension/ license

9) Package all files as a WAR: alfresco.war; 

10) Deploy it in $LIFERAY_HOME/deploy

Note that you may not be able to add alfresco portlets in Liferay portal pages properly, since some alfresco portlets requires to be signed in first. Simple solution - you can create an account “admin/admin” (default account in alfresco) in Liferay, and assign this account to the role “Administrator”.  Then login as “admin/admin” in Liferay portal, and add alfresco portlets in Liferay portal pages. 

Or, you can use the result WAR directly:  download WAR from http://liferay.cignex.com/palm_tree/0387/sso/liferay/alfresco-portlet/alfresco.war and deploy it in $LIFERAY_HOME/deploy.  That’s it. Note that use JDK 1.6.0_14 or above.

Wiki Article URL: http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Full+Integration+-+Liferay,+Alfresco,+SSO+and+LDAP

 
Could you check the url? I can't reach the Cignex site...
Hi Peter, thank you! The server liferay.cignex.com was down (in last weekend - due to hardware issue). It will be up as soon as possible.

The server liferay.cignex.com is up now. Please let me know if you have any questions.
Server is down. By the way, you're writing a very much awaited wiki articleemoticon
Hi Damitry, thanks. The server is up now. Yes, the server has an hardware issue. It is planning to use another server - more stable and robust box - same URL: liferay.cignex.com

Hope that the wiki articles would be helpful.
Hi Damitry, as promised, the server liferay.cignex.com was updated with 64-bit OS Linux (RedHat), 8G available memory. It should be stable and robust. Please inform me if you find any performance issue related.
Hi Jonas,
can it be, that this only works for the enterprise versions and not for Alfresco Community edition. ? I tried both approaches as described here with liferay 5.2.3, TOmcat 6 on java 1.6.0.14. and Alf 3.2 Community. I still get this classcast exception
...
18:49:30,204 ERROR [PortletHotDeployListener:663] java.lang.ClassCastException: org.springframework.beans.factory.BeanCreationException cannot be cast to org.springframework.web.context.WebApplicationContext
java.lang.ClassCastException: org.springframework.beans.factory.BeanCreationException cannot be cast to org.springframework.web.context.WebApplicationContext
...

Would be great, if you could check it out
Regards, Norgan
Hi Norgan, thank you. Interesting ... it should work for Alfresco 3.2 community version too. Is the Alfresco E 3.1 working for you? I did not have a package for Alfresco 3.2 community version yet. But I will have it when Alfresco 3.2 E version is ready.

Is it urgent for you? will you use Alfresco 3.2 community version only? It would be nice to know your requirements.

Thanks.
Jonas Yuan
Hi Jonas, I dont have an enterprise license. What I need is 3.1 or 3.2, I think the enterprise version does not have the workflow API yet.
Oops, I did test 2.1, the same error shows up emoticon So it must be something I am doing wrong - maybe the java version.

found another exception btw :

PropertyAccessException 2:
org.springframework.beans.TypeMismatchException: Failed to convert property value of type [java.lang.String] to required type [org.alfresco.repo.search.MLAnalysisMode] for property 'defaultMLSearchAnalysisMode'; nested exception is java.lang.IllegalArgumentException: Unsupported value: EXACT_LANGUAGE_AND_ALL
Caused by:
java.lang.IllegalArgumentException: Unsupported value: EXACT_LANGUAGE_AND_ALL
at sun.beans.editors.EnumEditor.setValue(EnumEditor.java:71)

Does that look more familiar ?
Hi Norgan, Thanks. Interesting issues ...

You may try the following. You would have everything in this package. :-)
"Or, you can use the result WAR directly: download WAR from http://liferay.cignex.com/palm_tree/0387/sso/liferay/alfresco-portlet/alfresco.war and deploy it in $LIFERAY_HOME/deploy. That’s it."

Please let me know if you meet any issues.
VM-LIN-216:/opt/liferay-portal-5.2.3/tomcat-6.0.18 # java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (build 1.6.0_0-b11)
OpenJDK Client VM (build 1.6.0_0-b11, mixed mode)
---
rm -rf alf_data; rm -rf webapps/alfresco; drop database alfresco; cp your.war deploy/alfresco.war
---
"ready to deplo ... " .. shutdown - startup .... <follofing log>
---
first the known "EXACT_LANGUAGE_AND_ALL", then ...
.plugin.PluginPackageException: Unable to communicate with repository http://plugins.liferay.com/community
20:09:23,017 WARN [PluginPackageUtil:318] Unable to communicate with repository http://plugins.liferay.com/official
20:09:23,031 WARN [PluginPackageUtil:318] Unable to communicate with repository http://plugins.liferay.com/community
20:09:26,714 INFO [PortletHotDeployListener:227] Registering portlets for alfresco
20:09:27,058 ERROR [PortletHotDeployListener:663] java.lang.ClassCastException: org.springframework.beans.factory.BeanCreationException cannot be cast to org.springframework.web.context.WebApplicationContext
java.lang.ClassCastException: org.springframework.beans.factory.BeanCreationException cannot be cast to org.springframework.web.context.WebApplicationContext
at org.alfresco.web.scripts.portlet.WebScriptPortlet.init(WebScriptPortlet.java:85)
at com.liferay.portlet.InvokerPortletImpl.init(InvokerPortletImpl.java:250)
[...]
20:09:27,059 ERROR [PortletHotDeployListener:663] java.lang.ClassCastException: org.springframework.beans.factory.BeanCreationException cannot be cast to org.springframework.web.context.WebApplicationContext
java.lang.ClassCastException: org.springframework.beans.factory.BeanCreationException cannot be cast to org.springframework.web.context.WebApplicationContext
at org.alfresco.web.scripts.portlet.WebScriptPortlet.init(WebScriptPortlet.java:85)
at com.liferay.portlet.InvokerPortletImpl.init(InvokerPortletImpl.java:250)
at com.liferay.portlet.PortletInstanceFactoryImpl.init(PortletInstanceFactoryImpl.java:245)
... <some times> ...
20:09:27,232 INFO [PortletHotDeployListener:351] 6 portlets for alfresco are available for use
Oct 9, 2009 8:09:27 PM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Oct 9, 2009 8:09:27 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/alfresco] startup failed due to previous errors
20:09:27,266 WARN [PluginPackageUtil:1303] Unable to reindex unistalled package alfresco: Unable to communicate with repository http://plugins.liferay.com/official
20:09:27,268 INFO [PortletHotDeployListener:381] Unregistering portlets for alfresco
20:09:27,275 INFO [PortletHotDeployListener:417] 6 portlets for alfresco was unregistered


For complete log send me a mail at spam minus 01 at gmx doth de I appreciate your help )
Hi Norgan, Thanks. The JDK I build the WAR is 1.6.0_14. You would need to use JDK 1.6.0_14 or above. I should update the same in blog entry. Please change your JDK version to 1.6.0_14 or above.
Jonas thanks for you effort in putting this together.

Not sure if there is a better place for this. Let me know if there is.

I tried your "Alfresco 3.1 E, LDAP ADS and SSO CAS" on your demo page.

After starting it I get :

20:56:04,263 User:System WARN [repo.admin.ConfigurationChecker] The Alfresco 'dir.root' property is set to a relative path './alf_data'. 'dir.root' should be overridden to point to a specific folder.

20:56:04,310 User:System ERROR [repo.admin.ConfigurationChecker] CONTENT INTEGRITY ERROR: System content not found in content store.
20:56:04,310 User:System ERROR [repo.admin.ConfigurationChecker] Ensure that the 'dir.root' property is pointing to the correct data location.
20:56:04,315 User:System ERROR [web.context.ContextLoader] Context initialization failed
org.alfresco.error.AlfrescoRuntimeException: Ensure that the 'dir.root' property is pointing to the correct data location.
at org.alfresco.repo.admin.ConfigurationChecker.check(ConfigurationChecker.java:312)
at org.alfresco.repo.admin.ConfigurationChecker.access$000(ConfigurationChecker.java:72)
...
SEVERE: Error listenerStart
Oct 28, 2009 8:56:04 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/alfresco] startup failed due to previous errors

Even though I've set the dir.root directory in the WEB-INF/classes/alfresco/repository.properties file.

Also your log4j.properties in WEB-INF/classes is CRLF, LF which the parser does not seem to like.

Thanks for any help.

Using JRE_HOME: /usr/java/jdk1.6.0_14
Server version: Apache Tomcat/6.0.20
Server built: May 14 2009 01:13:50
Server number: 6.0.20.0
OS Name: Linux
OS Version: 2.6.18-128.el5
Architecture: i386
JVM Version: 1.6.0_14-b08
JVM Vendor: Sun Microsystems Inc.
Hi James, Thank you.

You may refer to http://liferay.cignex.com/palm_tree/full-liferay-53-alfresco-31-readme.txt.

"Note that, you may need to reset "dir.root" as "dir.root=/opt/sso/liferay53/alf_data" in custom-repository."

Hope that it helps.
Yes, did not see that. So that got be further. I now am stuck at the same problem as below...

And when I hit login in the alfresco portlet I get...

javax.faces.FacesException: org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Cannot get value for expression '#{NavigationBean.toolbarLocation}'
caused by:
javax.portlet.PortletException: org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Cannot get value for expression '#{NavigationBean.toolbarLocation}'
caused by:
org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Cannot get value for expression '#{NavigationBean.toolbarLocation}'
caused by:
javax.faces.el.EvaluationException: Cannot get value for expression '#{NavigationBean.toolbarLocation}'
caused by:
javax.faces.el.EvaluationException: Exception getting value of property toolbarLocation of base of type : org.alfresco.web.bean.NavigationBean
caused by:
javax.faces.el.EvaluationException: Bean: org.alfresco.web.bean.NavigationBean, property: toolbarLocation
caused by:
java.lang.reflect.InvocationTargetException
caused by:
java.lang.NullPointerException

Hide Details

javax.faces.FacesException: org.apache.jasper.JasperException: javax.faces.el.EvaluationException: Cannot get value for expression '#{NavigationBean.toolbarLocation}'
at org.apache.myfaces.context.portlet.PortletExternalContextImpl.dispatch(PortletExternalContextImpl.java:174)
at org.apache.myfaces.application.jsp.JspViewHandlerImpl.renderView(JspViewHandlerImpl.java:175)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
...
Hi James, thank you. Do you get issues fixed? It seems that there are special characters in JSP file. Please use proper TEXT editor to update JSP files. Hope that this helps.
Hi James, Do you get it fixed?
I've also tried your 10 step method above but have these problems...

Needed util*jar from liferay's WEB-INF/lib copied into alfresco's WEB-INF/lib

http://10.10.1.218:8080/alfresco/ gives me this now...

java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:93)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContextImpl(FacesHelper.java:131)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContext(FacesHelper.java:86)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:171)
...

Also I get this in the Document List portlet ...

The Web Script /alfresco/168s/ui/doclist has responded with a status of 500 - Internal Error.

500 Description: An error inside the HTTP server which prevented it from fulfilling the request.

Message: Wrapped Exception (with status template): Read-Write transaction started within read-only transaction

Exception: org.alfresco.error.AlfrescoRuntimeException - Read-Write transaction started within read-only transaction

org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:294)
org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:229)
org.alfresco.repo.web.scripts.RepoStore$RepoScriptLoader$1.doWork(RepoStore.java:858)
org.alfresco.repo.web.scripts.RepoStore$RepoScriptLoader$1.doWork(RepoStore.java:856)
Wow this is way awesome, thank you for this

I have a little problem, Document List and My spaces portlets display an error HTTP 500 instead, I saw some errors on console while the war deployed so i guess they are related

Can you add some explanation on the wiki about what the war did, as you do with many things on your book? I don't know where all this portlets came from and why it all works emoticon

Thanks again
Hi Pablo, Thank you. Did you get the issue fixed?

More details about Alfresco integration would be addressed in the book: Liferay Portal 5.3 Enterprise Intranets. Hope that it would help.
Well, I couldn't fix why 2 of 6 portlets didn't worked, I assumed it was a problem with my 5.3 code from trunk, which is giving me several problems

I'll try again and let you know as soon as I can
My Placeholder
It works for me with liferay 5.2.3 and Alfresco3.2 R2 Community Edition. Thanks!
Great! Thank you, John.
I followed the ten setps above to modify Alfresco3.2 R2 Community Edition, but it fails to show up in the 'Add Application' list. Was there something else you implemented in the alfresco.war?
Hi Will, you may try this:

Or, you can use the result WAR directly: download WAR from http://liferay.cignex.com/palm_tree/0387/sso/liferay/alfresco-portlet/alfresco.war and deploy it in $LIFERAY_HOME/deploy. That’s it. Note that use JDK 1.6.0_14 or above.
Hi Pablo, you may not use 5.3 trunk - it is unstable at moment.
Hi again,

I wanted to share something that might be weird, probably a mistake of mine but I can't explain this

my company wants to use oracle for liferay, and Mysql for alfresco 3.2 community, because community does not support use of oracle 10XE as I read on their forums.

When Liferay loads it shows it is using oracle10g dialect and all good, but when I deploy alfresco as portlets, this message changes to MySQL dialect

I thought it was a printing error because Liferay runs perfectly and using the oracle DB, but I found that when you deploy new portlets from SDK, the portlets will display an error because they couldn't create their tables... surprisingly I remove alfresco, the dialect message goes back to oracle10g and the portlet deploys correctly

resuming, it seems that although it doesn't affect Liferay it does affect new portlets which need to execute queries

any idea of what's happening?
Hi Pablo, good catch. Thanks. This would be a bug. I am trying to reproduce the issue and come back to you shortly.
Hi Jonas, you had any luck reproducing it? It would point to be a bug from the dialect detector right?
Hi Pablo, sorry that I could not find time to work on this recently. Hope that I could do it as earlier as possible.
Hi, Jonas,
I have the same problems with Int In and James Arnott. I got the following messages after following your instructions.
Also, I tried your suggestions to create database alfresco from scratch, and remove existing alf_data. Unfortunately it's still the same.
I am using the alfresco.war from http://liferay.cignex.com/palm_tree/book/0387/chapter13/full-integration/ and liveray community version 6.02. LDAP and CAS are working fine.
Do you have any solutions for this?

Thanks!

java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
BTY, I turned on the logging for alfresco and here is what I got. Do you think it's related?

Thanks!

18:51:29,983 INFO [org.apache.myfaces.config.FacesConfigurator] Reading standard config org/apache/myfaces/resource/standard-faces-config.xml
18:51:30,269 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config jar:file:/E:/Liferay/liferay-portal-6.0.2/tomcat-6.0.26/webapps/alfresco/WEB-INF/lib/util-taglib.jar!/META-INF/faces-config.xml
18:51:30,277 WARN [org.apache.myfaces.config.FacesConfigurator] /WEB-INF/faces-config.xml has been specified in the javax.faces.CONFIG_FILES context parameter of the deployment descriptor. This should be removed, as it will be loaded twice. See JSF spec 1.1, 10.3.2
18:51:30,279 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config.xml
18:51:30,288 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-app.xml
18:51:30,297 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-beans.xml
18:51:30,424 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-navigation.xml
18:51:30,442 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-common.xml
18:51:30,453 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-repo.xml
18:51:30,464 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-wcm.xml
18:51:30,472 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config-custom.xml
18:51:30,475 INFO [org.apache.myfaces.config.FacesConfigurator] Reading config /WEB-INF/faces-config.xml
18:51:30,493 INFO [org.apache.myfaces.config.FacesConfigurator] Starting up MyFaces-package : myfaces-api in version : 1.1.5 from path : file:/E:/Liferay/liferay-portal-6.0.2/tomcat-6.0.26/webapps/alfresco/WEB-INF/lib/myfaces-api-1.1.5.jar
18:51:30,493 INFO [org.apache.myfaces.config.FacesConfigurator] Starting up MyFaces-package : myfaces-impl in version : 1.1.5 from path : file:/E:/Liferay/liferay-portal-6.0.2/tomcat-6.0.26/webapps/alfresco/WEB-INF/lib/myfaces-impl-1.1.5.jar
18:51:30,493 INFO [org.apache.myfaces.config.FacesConfigurator] MyFaces-package : tomahawk-sandbox not found.
18:51:30,493 INFO [org.apache.myfaces.config.FacesConfigurator] MyFaces-package : tomahawk not found.
18:51:30,666 INFO [org.apache.myfaces.config.FacesConfigurator] Serialization provider : class
Hi Wei, thanks. It seems that you met TLD issue. Do you get it solved?
Hi Jonas, at first a big thank you for the article.
I finally managed it to get Alfresco 3.2 (CE) and Liferay 6.0.2 up and running (without CAS and/or LDAP, still workin on that).
But i only have one portlet "Alfresco Client Portlet". The others don´t show up.
catalina logs says:
14:29:30,792 INFO [PortletHotDeployListener:223] Registering portlets for alfresco
14:29:31,084 ERROR [PortletBagFactory:114] java.lang.ClassNotFoundException: org.alfresco.web.scripts.portlet.WebScriptPortlet
java.lang.ClassNotFoundException: org.alfresco.web.scripts.portlet.WebScriptPortlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
at com.liferay.portlet.PortletBagFactory.create(PortletBagFactory.java:111)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.initPortlet(PortletHotDeployListener.java:450)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:252)
at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:104)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._doFireDeployEvent(HotDeployUtil.java:104)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._flushPrematureEvents(HotDeployUtil.java:167)
at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.flushPrematureEvents(HotDeployUtil.java:43)
at com.liferay.portal.servlet.MainServlet.initPlugins(MainServlet.java:798)
at com.liferay.portal.servlet.MainServlet.init(MainServlet.java:351)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

repeated 5 times.
After that it reads:
14:29:31,287 INFO [PortletHotDeployListener:368] 1 portlet for alfresco is available for use

Aren´t the other portlets included in the Community Edition? What do i have to do to get them working, because i can´t afford a commercial license.
Hmmm. No answer yet. Is this the right place to ask? Or maybe better in the forum?
Hi Ace, Thanks. Sorry that I just came back late.

It seems that "WebScriptPortlet" is missing. Could you please double check the JAR files?

java.lang.ClassNotFoundException: org.alfresco.web.scripts.portlet.WebScriptPortlet
Hi Jonas, thank you for your answer.

It turns out, that i have Alfresco 3.3(CE) and Web Scripts are now a part of Spring Surf (see http://forums.alfresco.com/en/viewtopic.php?f=36&t=27373). Don´t know what that means or what to do now.
Now i am looking for help how to integrate the 3.3 webscripts in Liferay 6.
Ok. 1 step further:
In the portlet.xml i changed all refences from "org.alfresco.web.scripts.portlet.WebScriptPortlet" to "org.springframework.extensions.webscripts.portlet.WebScriptPortlet".
Now i am able to add the webscripts in Liferay. But when i add a Portlet then the stylesheet and code gets displayed in the portlet emoticon
I think i have to use an old version of Alfresco.
Hi Ace, Thanks. It should work well when using alfresco 3.3. Do you get this fixed?
Hi Jonas,
It was a nice article. We are considering liferay as our portal. But we are using open text as our CMS. You mentioned that we can integrate any CMIS compliant CMS in this way. Do we have any instruction on how to integrate with opne text using CMIS?
Hi Brian, thanks. Of course, you would be able to integrate OpenText using CMIS in Liferay portal 6. You may refer to this blogs: http://www.liferay.com/web/jonas.yuan/blog/-/blogs/integrating-alfresco-through-cmis-in-liferay
Dear All,

i'm trying my first steps on using Alfresco + Liferay, i'm really new to the world of both. And quite lost.

I was trying to have something working to then explore it. But fail to do so.

i have downloaded : liferay-portal-5.2.3

and created databases as explained :

create database alfresco character set utf8;
grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;

Alfresco.war was downloaded from => http://www.liferay.com/web/jonas.yuan/blog/-/blogs/integrating-alfresco-web-client-as-a-set-of-portlets-with-liferay

and i copy this file un "<LIFERAY>"/deploy

accessing http://localhost:8081/alfresco/

produce a page containing Alfresco error message : see below,

also blow is the content of the Alfresco.log, if that could help.

many thanks for any help,

best regards.

I.N.

java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

Hide Details

java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:93)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContextImpl(FacesHelper.java:131)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContext(FacesHelper.java:86)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:160)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:140)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)


-------------------------------

Alfresco.lo g


20:24:25,332 INFO [org.alfresco.config.SystemPropertiesFactoryBean] Loading properties file from class path resource [alfresco/domain/hibernate-cfg.properties]
20:24:47,323 ERROR [org.alfresco.repo.content.transform.magick.AbstractImageMagickContentTransformer] ImageMagickContentTransformer not available: Failed to perform ImageMagick transformation:
Execution result:
os: Linux
command: [./ImageMagick/bin/convert, /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/ImageMagickContentTransformer_init_source_2493142994370496254.gif[0], /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/ImageMagickContentTransformer_init_target_7372697971745053892.png]
succeeded: false
exit code: 1
out:
err: Cannot run program "./ImageMagick/bin/convert": java.io.IOException: error=2, No such file or directory
20:24:48,382 WARN [org.springframework.jmx.support.JmxUtils] Found more than one MBeanServer instance. Returning first from list.
20:24:50,163 INFO [org.alfresco.config.xml.XMLConfigService$PropertyConfigurer] Loading properties file from class path resource [alfresco/file-servers.properties]
20:24:51,054 WARN [org.springframework.jmx.support.JmxUtils] Found more than one MBeanServer instance. Returning first from list.
20:25:04,470 ERROR [org.alfresco.repo.content.transform.RuntimeExecutableContentTransformer] Failed to start a runtime executable content transformer:
Execution result:
os: Linux
command: [./bin/pdf2swf, -V]
succeeded: false
exit code: 1
out:
err: Cannot run program "./bin/pdf2swf": java.io.IOException: error=2, No such file or directory
20:25:13,147 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] Schema managed by database dialect org.hibernate.dialect.MySQLInnoDBDialect.
20:25:13,342 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] Executing database script /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/AlfrescoSchemaCreate-org.hibernate.dialect.MySQLInnoDBDialect-1658299978196645316.sql (Generated).
20:25:17,121 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] Executing database script /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/AlfrescoSchemaUpdate-org.hibernate.dialect.MySQLInnoDBDialect-6312960806937138666.sql (Copied from classpath:alfresco/dbscripts/create/2.2/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.2-MappedFKIndexes.sql).
20:25:17,139 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] Executing database script /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/AlfrescoSchemaUpdate-org.hibernate.dialect.MySQLInnoDBDialect-5034659005061150090.sql (Copied from classpath:alfresco/dbscripts/create/2.2/org.hibernate.dialect.MySQLInnoDBDialect/AlfrescoPostCreate-2.2-Extra.sql).
20:25:17,465 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] Executing database script /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/AlfrescoSchemaUpdate-org.hibernate.dialect.MySQLInnoDBDialect-577119894437256806.sql (Copied from classpath:alfresco/dbscripts/create/2.2/org.hibernate.dialect.MySQLInnoDBDialect/post-create-indexes-04.sql).
20:25:17,486 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] Executing database script /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/AlfrescoSchemaUpdate-org.hibernate.dialect.MySQLInnoDBDialect-2655125586342253084.sql (Copied from classpath:alfresco/dbscripts/create/3.0/org.hibernate.dialect.MySQLInnoDBDialect/create-activities-extras.sql).
20:25:17,604 INFO [org.alfresco.repo.domain.schema.SchemaBootstrap] All executed statements written to file /opt/intellinium/liferay-portal-5.2.3/tomcat/temp/Alfresco/AlfrescoSchemaUpdate-All_Statements-1232695067970631292.sql.
20:25:17,981 DEBUG [org.alfresco.repo.avm.TransactionalLookupCache.init] preRegister called. Server=com.sun.jmx.mbeanserver.JmxMBeanServer@1e48b4c, name=log4j:logger=org.alfresco.repo.avm.TransactionalLookupCache.init
20:26:14,582 INFO [org.alfresco.service.descriptor.DescriptorService] Successfully installed license from file [/opt/intellinium/liferay-portal-5.2.3/tomcat/temp/0-alfresco/WEB-INF/classes/alfresco/extension/license/alfresco-enterprise-v3.1-partner-unlimited.lic]
20:26:14,772 WARN [org.alfresco.repo.admin.ConfigurationChecker] The Alfresco 'dir.root' property is set to a relative path '../../alf_data'. 'dir.root' should be overridden to point to a specific folder.
20:26:14,772 INFO [org.alfresco.repo.admin.ConfigurationChecker] The Alfresco root data directory ('dir.root') is: ../../alf_data
20:26:14,843 INFO [org.alfresco.repo.admin.patch.PatchExecuter] Checking for patches to apply ...
20:26:16,092 INFO [org.alfresco.repo.admin.patch.PatchExecuter]
=== Applied patch ===
ID: patch.db-V3.0-0-CreateActivitiesExtras
RESULT:
Script completed
=====================================
20:26:16,103 INFO [org.alfresco.repo.module.ModuleServiceImpl] Found 0 module(s).
20:26:21,476 ERROR [org.alfresco.smb.protocol] Failed to get local domain/workgroup name, using default of WORKGROUP
20:26:21,477 ERROR [org.alfresco.smb.protocol] (This may be due to firewall settings or incorrect <broadcast> setting)
20:26:22,039 WARN [org.alfresco.util.OpenOfficeConnectionTester] An initial OpenOffice connection could not be established.
20:26:22,174 INFO [org.alfresco.service.descriptor.DescriptorService] Alfresco JVM - v1.6.0_12-b04; maximum heap size 1016,125MB
20:26:22,175 INFO [org.alfresco.service.descriptor.DescriptorService] Alfresco license: Enterprise - v3.1 granted to Cignex (does not expire)
20:26:22,176 INFO [org.alfresco.service.descriptor.DescriptorService] Alfresco started (Enterprise): Current version 3.1.0 (142) schema 1008 - Installed version 3.1.0 (142) schema 1008
20:27:49,983 ERROR [org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/alfresco].[jsp]] "Servlet.service()" pour la servlet jsp a généré une exception
java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:93)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContextImpl(FacesHelper.java:131)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContext(FacesHelper.java:86)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:160)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:140)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:91)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:154)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:94)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:78)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Hi Int In,

Make sure that you have created database alfresco from scratch, and remove existing alfresco /alf_data.
Hi,
I have been using liferay 5.2.3 and I followed all the 10 steps as described above..alfresco is running but I am not able to included it as a portlet in liferay...am I doing something wrong?
Hi Sultan, thanks. Do you get any kind of error message?
Hi Jonas,
I did it for your 10 steps plan. But when I trying to invoke http://localhost:8080/alfresco, the following System Error appears:

java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

Can you help me with this problem please?
Hi P Cache, thanks. This is due to different version of JSTL. Liferay 6 has upgraded JSTL version.

Upgrading JSTL version in alfresco portlets, you should be able to fix this issue.

Hope that this helps.
Hi Jonas, thanks for your fast response. I replaced JSTL-1.1.jar with JSTL-1.2.jarin alfresco portlet, but the error still appears. I'm using Liferay 6.0.4 and Alfresco 3.3. I bought your book "Liferay Portal 6 Enterprise Intranets" today. I followed all the steps you described there to integrate Alfresco as a set of portlets. Without success.

Here's the whole error message:

java.lang.IllegalStateException: No Factories configured for this Application. This happens if the faces-initialization does not work at all - make sure that you properly include all configuration settings necessary for a basic faces application and that all the necessary libs are included. Also check the logging output of your web application and your container for any exceptions!
If you did that and find nothing, the mistake might be due to the fact that you use some special web-containers which do not support registering context-listeners via TLD files and a context listener is not setup in your web.xml.
A typical config looks like this;
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>

at javax.faces.FactoryFinder.getFactory(FactoryFinder.java:93)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContextImpl(FacesHelper.java:131)
at org.alfresco.web.app.servlet.FacesHelper.getFacesContext(FacesHelper.java:86)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:171)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:177)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:107)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:67)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:177)
at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:126)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:104)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:67)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:177)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:107)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:67)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:177)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:107)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:67)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:177)
at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:107)
at com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:67)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:637)

Hope you can help me along with that problem.
Sorry for my long error messages. I took a look at catalina.out and it says the following:

=== Applied patch ===
ID: patch.db-V3.0-0-CreateActivitiesExtras
RESULT:
Script completed
=====================================
10:01:09,896 User:System INFO [repo.module.ModuleServiceImpl] Found 0 module(s).
10:01:10,255 User:System WARN [alfresco.util.OpenOfficeConnectionTester] An initial OpenOffice connection could not be established.
10:01:10,291 User:System INFO [service.descriptor.DescriptorService] Alfresco JVM - v1.6.0_20-b02-279-10M3065; maximum heap size 1019,875MB
10:01:10,291 User:System INFO [service.descriptor.DescriptorService] Alfresco license: Enterprise - v3.1 granted to Cignex (does not expire)
10:01:10,291 User:System INFO [service.descriptor.DescriptorService] Alfresco started (Enterprise): Current version 3.1.0 (142) schema 1008 - Installed version 3.1.0 (142) schema 1008
10:01:22,416 INFO [PortletHotDeployListener:220] Registering portlets for alfresco
10:01:22,420 WARN [SAXReaderImpl:429] XSD validation is diasabled because org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
10:01:22,426 WARN [SAXReaderImpl:429] XSD validation is diasabled because org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
10:01:22,568 WARN [SAXReaderImpl:429] XSD validation is diasabled because org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
10:01:22,687 WARN [SAXReaderImpl:429] XSD validation is diasabled because org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
10:01:22,764 INFO [PortletHotDeployListener:374] 6 portlets for alfresco are available for use
10:01:22,924 FATAL [InternalException:88] Exception:
org.apache.axis.ConfigurationException: org.apache.axis.deployment.wsdd.WSDDException: java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializerFactory cannot be cast to org.apache.axis.encoding.SerializerFactory
java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializerFactory cannot be cast to org.apache.axis.encoding.SerializerFactory
at org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(BaseSerializerFactory.java:277)
at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:542)
at org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:253)
at org.apache.axis.deployment.wsdd.WSDDService.<init>(WSDDService.java:233)
at org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:192)
at org.apache.axis.deployment.wsdd.WSDDDocument.setDocument(WSDDDocument.java:139)
at org.apache.axis.deployment.wsdd.WSDDDocument.<init>(WSDDDocument.java:65)
at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)
at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
at org.apache.axis.AxisEngine.<init>(AxisEngine.java:156)
at org.apache.axis.server.AxisServer.<init>(AxisServer.java:88)
at org.apache.axis.server.DefaultAxisServerFactory.createServer(DefaultAxisServerFactory.java:109)
at org.apache.axis.server.DefaultAxisServerFactory.getServer(DefaultAxisServerFactory.java:73)
at org.apache.axis.server.AxisServer.getServer(AxisServer.java:73)
at org.apache.axis.transport.http.AxisServletBase.getEngine(AxisServletBase.java:185)
at org.apache.axis.transport.http.AxisServletBase.getOption(AxisServletBase.java:396)
at org.apache.axis.transport.http.AxisServletBase.init(AxisServletBase.java:112)
at org.apache.axis.transport.http.AxisServlet.init(AxisServlet.java:156)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at com.liferay.portal.servlet.AxisServlet.init(AxisServlet.java:65)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.portalInit(PortalClassLoaderServlet.java:73)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:52)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.init(PortalClassLoaderServlet.java:44)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:637)

org.apache.axis.deployment.wsdd.WSDDException: java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializerFactory cannot be cast to org.apache.axis.encoding.SerializerFactory
java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializerFactory cannot be cast to org.apache.axis.encoding.SerializerFactory
at org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(BaseSerializerFactory.java:277)
at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:542)
at org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:253)
at org.apache.axis.deployment.wsdd.WSDDService.<init>(WSDDService.java:233)
at org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:192)
at org.apache.axis.deployment.wsdd.WSDDDocument.setDocument(WSDDDocument.java:139)
at org.apache.axis.deployment.wsdd.WSDDDocument.<init>(WSDDDocument.java:65)
at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)
at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
at org.apache.axis.AxisEngine.<init>(AxisEngine.java:156)
at org.apache.axis.server.AxisServer.<init>(AxisServer.java:88)
at org.apache.axis.server.DefaultAxisServerFactory.createServer(DefaultAxisServerFactory.java:109)
at org.apache.axis.server.DefaultAxisServerFactory.getServer(DefaultAxisServerFactory.java:73)
at org.apache.axis.server.AxisServer.getServer(AxisServer.java:73)
at org.apache.axis.transport.http.AxisServletBase.getEngine(AxisServletBase.java:185)
at org.apache.axis.transport.http.AxisServletBase.getOption(AxisServletBase.java:396)
at org.apache.axis.transport.http.AxisServletBase.init(AxisServletBase.java:112)
at org.apache.axis.transport.http.AxisServlet.init(AxisServlet.java:156)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at com.liferay.portal.servlet.AxisServlet.init(AxisServlet.java:65)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.portalInit(PortalClassLoaderServlet.java:73)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:52)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.init(PortalClassLoaderServlet.java:44)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:637)

at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:563)
at org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:253)
at org.apache.axis.deployment.wsdd.WSDDService.<init>(WSDDService.java:233)
at org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:192)
at org.apache.axis.deployment.wsdd.WSDDDocument.setDocument(WSDDDocument.java:139)
at org.apache.axis.deployment.wsdd.WSDDDocument.<init>(WSDDDocument.java:65)
at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)
at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
at org.apache.axis.AxisEngine.<init>(AxisEngine.java:156)
at org.apache.axis.server.AxisServer.<init>(AxisServer.java:88)
at org.apache.axis.server.DefaultAxisServerFactory.createServer(DefaultAxisServerFactory.java:109)
at org.apache.axis.server.DefaultAxisServerFactory.getServer(DefaultAxisServerFactory.java:73)
at org.apache.axis.server.AxisServer.getServer(AxisServer.java:73)
at org.apache.axis.transport.http.AxisServletBase.getEngine(AxisServletBase.java:185)
at org.apache.axis.transport.http.AxisServletBase.getOption(AxisServletBase.java:396)
at org.apache.axis.transport.http.AxisServletBase.init(AxisServletBase.java:112)
at org.apache.axis.transport.http.AxisServlet.init(AxisServlet.java:156)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at com.liferay.portal.servlet.AxisServlet.init(AxisServlet.java:65)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.portalInit(PortalClassLoaderServlet.java:73)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:52)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.init(PortalClassLoaderServlet.java:44)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:637)

I can't imagine what the problem is. Do you have any idea?
Hi P Cache, you can take cleanup process and restart the portal. cleanup process is available in the book "Liferay Portal 6 Enterprise Intranets".

Hope that it helps,

Thanks
Unfortunately it doesn't work either after cleanup. There is no change in the error message. What's kinda strange is the error message that the required method public static EngineConfigurationFactory newFactory(Object) is missing, although the method is there.

10:58:06,796 INFO [PortletHotDeployListener:374] 6 portlets for alfresco are available for use
10:58:06,891 WARN [EngineConfigurationFactoryFinder:184] Factory org.apache.axis.configuration.EngineConfigurationFactoryServlet Ignored: missing required method: public static EngineConfigurationFactory newFactory(Object).
10:58:07,160 FATAL [InternalException:88] Exception:
org.apache.axis.ConfigurationException: org.apache.axis.deployment.wsdd.WSDDException: java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializerFactory cannot be cast to org.apache.axis.encoding.SerializerFactory
java.lang.ClassCastException: org.apache.axis.encoding.ser.BeanSerializerFactory cannot be cast to org.apache.axis.encoding.SerializerFactory
at org.apache.axis.encoding.ser.BaseSerializerFactory.createFactory(BaseSerializerFactory.java:277)
at org.apache.axis.deployment.wsdd.WSDDService.deployTypeMapping(WSDDService.java:542)
at org.apache.axis.deployment.wsdd.WSDDService.initTMR(WSDDService.java:253)
at org.apache.axis.deployment.wsdd.WSDDService.<init>(WSDDService.java:233)
at org.apache.axis.deployment.wsdd.WSDDDeployment.<init>(WSDDDeployment.java:192)
at org.apache.axis.deployment.wsdd.WSDDDocument.setDocument(WSDDDocument.java:139)
at org.apache.axis.deployment.wsdd.WSDDDocument.<init>(WSDDDocument.java:65)
at org.apache.axis.configuration.FileProvider.configureEngine(FileProvider.java:179)
at org.apache.axis.AxisEngine.init(AxisEngine.java:172)
at org.apache.axis.AxisEngine.<init>(AxisEngine.java:156)
at org.apache.axis.server.AxisServer.<init>(AxisServer.java:88)
at org.apache.axis.server.DefaultAxisServerFactory.createServer(DefaultAxisServerFactory.java:109)
at org.apache.axis.server.DefaultAxisServerFactory.getServer(DefaultAxisServerFactory.java:73)
at org.apache.axis.server.AxisServer.getServer(AxisServer.java:73)
at org.apache.axis.transport.http.AxisServletBase.getEngine(AxisServletBase.java:185)
at org.apache.axis.transport.http.AxisServletBase.getOption(AxisServletBase.java:396)
at org.apache.axis.transport.http.AxisServletBase.init(AxisServletBase.java:112)
at org.apache.axis.transport.http.AxisServlet.init(AxisServlet.java:156)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at com.liferay.portal.servlet.AxisServlet.init(AxisServlet.java:65)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.portalInit(PortalClassLoaderServlet.java:73)
at com.liferay.portal.kernel.util.PortalLifecycleUtil.register(PortalLifecycleUtil.java:52)
at com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.init(PortalClassLoaderServlet.java:44)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4187)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4496)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Hi P Cache, Thanks. Alfresco UI is based on JSTL old version 1.1. But Liferay 6 supports JSTL latest version 1.2. I think that it would be better to update JSTL in Alfresco UI portlet. This can resolve the issue completely.

Hope that it helps,
What do you mean with update JSTL in Alfresco UI portlet. I replaced the JSTL-1.1.jar with JSTL-1.2.jar in <Alfresco-HOME>/WEB-INF/lib an build the war new. But this doesn't fix the problem. I also tried to adapt the DTD files in liferay-display.xml and liferay-portlet.xml from Version 5.2.0 to 6.0.0. But without am impact. I'm currently pretty helpless emoticon
Hi P Cache, you may need:

1)replaced the JSTL-1.1.jar with JSTL-1.2.jar;
2)change dependencies
portal-dependency-tlds=\c.tld
at liferay-plugin-package.properties

3) re-deploy the alfresco portlet
Hi Jonas,

I have the same problems as P Cache.
I did you said :
1)replaced the JSTL-1.1.jar with JSTL-1.2.jar;
2)change dependencies
portal-dependency-tlds=\c.tld
at liferay-plugin-package.properties

3) re-deploy the alfresco portlet

The error still remains.
Any more ideas ?

Thank you !