cancel
Showing results for 
Search instead for 
Did you mean: 

Unable to 'Edit Online' Word Documents with alfresco share

aniko
Champ in-the-making
Champ in-the-making
Hi,
old problem, many postings but no solution :-((
It's unable to "edit online" Word Documents with alfresco share.
It is possible to open the Document at the IE but the Documents will be opened Read-Only. On another Client can not open anything.
I have look to the forum and internet and found many solutions, but nothing works for me.

These steps I have done:

Install vti-module amp 1.1
Change the tag "edit-link-typ" to "webdav" at the file web-client-config.xml (http://forums.alfresco.com/en/viewtopic.php?f=3&t=19885)
Change the Windows registry entry OpenDocumentsReadWriteWhileBrowsing (http://support.microsoft.com/kb/870853/en-us)
Install the webdav Patch for Windows Vista (http://support.microsoft.com/kb/892211)
Disable to open a Office Document at the IE (Isn't work with Windows Vista) (http://support.microsoft.com/kb/162059)

Following alfresco Version I have tried:

Installed version 3.2.0 (_dev r-1) schema 2013
Installed version 3.2.0 (2039) schema 2019
installed version 3.2.0 (@build-number@) schema 3003

Operation System alfresco:
Windows Vista SP2
Solaris x86

Operation System Client:
Windows Vista SP2
Microsoft Word 2007

aniko
20 REPLIES 20

mikeh
Star Contributor
Star Contributor
Change the Windows registry entry OpenDocumentsReadWriteWhileBrowsing (http://support.microsoft.com/kb/870853/en-us)
This should be the only fix you need for Share. Make sure the fix was applied to the client.

Try to open the file directly from Office using the Vti URL (the port 7070 one) to see if the document opens read/write. If it works ok direct from Office, but is still read-only when launched from MSIE, please double-check the fix was applied correctly on the client.

Thanks,
Mike

aniko
Champ in-the-making
Champ in-the-making
After try to open the file directly from Office using the Vti URL (the port 7070 one) i get this error:

7705514 [29883388@qtp0-8] ERROR org.mortbay.log - /alfresco/Testdoku/documentLibrary/AdSuite1255941973461.docx
org.alfresco.error.AlfrescoRuntimeException: 09200109 Transaction must be active and synchronization is required: Thread[29883388@qtp0-8,5,main]
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport.registerSynchronizations(AlfrescoTransactionSupport.java:435)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getSynchronization(AlfrescoTransactionSupport.java:419)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getResource(AlfrescoTransactionSupport.java:212)
        at org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor.getFlushData(DirtySessionMethodInterceptor.java:213)
        at org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor.invoke(DirtySessionMethodInterceptor.java:354)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy6.getNodePair(Unknown Source)
        at org.alfresco.repo.node.db.DbNodeServiceImpl.getNodePairNotNull(DbNodeServiceImpl.java:155)
        at org.alfresco.repo.node.db.DbNodeServiceImpl.hasAspect(DbNodeServiceImpl.java:719)
        at sun.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invokeInternal(SingleEntryTransactionResourceInterceptor.java:154)
        at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invoke(SingleEntryTransactionResourceInterceptor.java:138)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy8.hasAspect(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy8.hasAspect(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:221)
        at $Proxy9.hasAspect(Unknown Source)
        at org.alfresco.repo.node.MLPropertyInterceptor.getPivotNodeRef(MLPropertyInterceptor.java:324)
        at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:164)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:203)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:203)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy8.getProperty(Unknown Source)
        at org.alfresco.repo.security.person.PersonServiceImpl.makeHomeFolderIfRequired(PersonServiceImpl.java:552)
        at org.alfresco.repo.security.person.PersonServiceImpl.getPersonOrNull(PersonServiceImpl.java:320)
        at org.alfresco.repo.security.person.PersonServiceImpl.getPersonImpl(PersonServiceImpl.java:277)
        at org.alfresco.repo.security.person.PersonServiceImpl.getPerson(PersonServiceImpl.java:271)
        at org.alfresco.web.sharepoint.auth.BasicAuthenticationHandler.authenticateRequest(BasicAuthenticationHandler.java:82)
        at sun.reflect.GeneratedMethodAccessor582.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory$1.invoke(ChainingSubsystemProxyFactory.java:122)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy75.authenticateRequest(Unknown Source)
        at org.alfresco.module.vti.handler.alfresco.DefaultAuthenticationHandler.authenticateRequest(DefaultAuthenticationHandler.java:139)
        at org.alfresco.module.vti.web.VtiFilter.doFilter(VtiFilter.java:134)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:533)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
7705639 [29883388@qtp0-8] ERROR org.mortbay.log - /alfresco/Testdoku/documentLibrary/
org.alfresco.error.AlfrescoRuntimeException: 09200110 Transaction must be active and synchronization is required: Thread[29883388@qtp0-8,5,main]
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport.registerSynchronizations(AlfrescoTransactionSupport.java:435)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getSynchronization(AlfrescoTransactionSupport.java:419)
        at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getResource(AlfrescoTransactionSupport.java:212)
        at org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor.getFlushData(DirtySessionMethodInterceptor.java:213)
        at org.alfresco.repo.domain.hibernate.DirtySessionMethodInterceptor.invoke(DirtySessionMethodInterceptor.java:354)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy6.getNodePair(Unknown Source)
        at org.alfresco.repo.node.db.DbNodeServiceImpl.getNodePairNotNull(DbNodeServiceImpl.java:155)
        at org.alfresco.repo.node.db.DbNodeServiceImpl.hasAspect(DbNodeServiceImpl.java:719)
        at sun.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invokeInternal(SingleEntryTransactionResourceInterceptor.java:154)
        at org.alfresco.repo.transaction.SingleEntryTransactionResourceInterceptor.invoke(SingleEntryTransactionResourceInterceptor.java:138)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy8.hasAspect(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
        at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:110)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy8.hasAspect(Unknown Source)
        at sun.reflect.GeneratedMethodAccessor246.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:221)
        at $Proxy9.hasAspect(Unknown Source)
        at org.alfresco.repo.node.MLPropertyInterceptor.getPivotNodeRef(MLPropertyInterceptor.java:324)
        at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:164)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:203)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:203)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy8.getProperty(Unknown Source)
        at org.alfresco.repo.security.person.PersonServiceImpl.makeHomeFolderIfRequired(PersonServiceImpl.java:552)
        at org.alfresco.repo.security.person.PersonServiceImpl.getPersonOrNull(PersonServiceImpl.java:320)
        at org.alfresco.repo.security.person.PersonServiceImpl.getPersonImpl(PersonServiceImpl.java:277)
        at org.alfresco.repo.security.person.PersonServiceImpl.getPerson(PersonServiceImpl.java:271)
        at org.alfresco.web.sharepoint.auth.BasicAuthenticationHandler.authenticateRequest(BasicAuthenticationHandler.java:82)
        at sun.reflect.GeneratedMethodAccessor582.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory$1.invoke(ChainingSubsystemProxyFactory.java:122)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
        at $Proxy75.authenticateRequest(Unknown Source)
        at org.alfresco.module.vti.handler.alfresco.DefaultAuthenticationHandler.authenticateRequest(DefaultAuthenticationHandler.java:139)
        at org.alfresco.module.vti.web.VtiFilter.doFilter(VtiFilter.java:134)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1115)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:361)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534)
        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:533)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403)
        at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
        at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522)
Thanks for help
aniko

dkane
Champ in-the-making
Champ in-the-making
Hello. I am using Alfresco 3.4.0 with Share.
After changing edit-link-type to "webdav" in web-client-config.xml , "Edit online" has become available in Alfresco Explorer , and I am able to edit-save docs (IE only).
However in Share I can only see "Edit Offline" menu item.
Adding registry key  http://support.microsoft.com/kb/870853/en-us didn't help that.
Any ideas ?  Thanks.

stevegreenbaum
Champ in-the-making
Champ in-the-making
With v3.4 Edit Online in Share is usually not problematic since they have been installing vti module by default.  Given you've already made the client change, then it is either your not using IE or the user doesn't have update rights to the file.  You can also double check to see if the vti-module is installed, perhaps they didn't start including the vti module to a later 3.4 release like 3.4b, don't recall exactly.  http://docs.alfresco.com/3.4/index.jsp?topic=%2Fcom.alfresco.Enterprise_3_4_0.doc%2Ftasks%2FSharePoi...

dkane
Champ in-the-making
Champ in-the-making
SteveGreenbaum,

Thank you for the response. I am using IE and verified that vti-module is installed. Using admin account for all operations starting from document upload.
Finally reinstalled alfresco from scratch (3.4e this time), changed edit-link-type to webdav in web-client-config.xml  again, but result is still the same. I am able to "Edit online" in Alfresco Explorer (JSF) but Alfrersco Share is still offering only "Edit offline" menu item.

stevegreenbaum
Champ in-the-making
Champ in-the-making
I see.  And I assume you are testing this with an MS Office document since online-edit only works with Office documents.

I know you said you confirmed vti is installed, but did you look in the log when you restart the server to make sure no errors appear – you should see a success message in the log – I just remembered that vti was renamed to spp recently.

dkane
Champ in-the-making
Champ in-the-making
SteveGreenbaum,

Yes I am testing with MS Office 2007.
There are no error messages related to "vti" in logs. Only numerous lines about reading vti.properties and finally the message "[module.vti.VtiServer] Vti server started successfully on port: 7070" .
Any other messages should present ?

stevegreenbaum
Champ in-the-making
Champ in-the-making
Maybe port 7070 isn't accessible.  Can you check that?  Or try to map a drive such as http://yourservername:7070/alfresco/

dkane
Champ in-the-making
Champ in-the-making
Maybe port 7070 isn't accessible.  Can you check that?  Or try to map a drive such as http://yourservername:7070/alfresco/
Looks like mapping was successful , it asked me for login and password and then opened IE with this URL . But page is empty . Is it expected result ?