cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP and Alfresco

bip1989
Star Contributor
Star Contributor

We have a very legacy application which is talking to an DMS via SOAP protocol. We are moving contents from that DMS to Alfresco. Now situation is that, our business doesn't want to touch the legacy application due to it's criticality. We want Alfresco to serve the content when legacy application sends SOAP request. 

After exploring fourms it seems like only REST is allowed? Is there a way to achieve ?

1 ACCEPTED ANSWER

abhinavmishra14
World-Class Innovator
World-Class Innovator

Refer this documentation: https://docs.alfresco.com/5.2/pra/1/concepts/cmis-bindings.html

It says that there is SOAP webservice binding available via CMIS. Check to see if it works for you. I am not sure if it even works.

I worked with a similar requirement couple of years ago and i choose to write a SOAP webservices middle layer between Alfresco repo (AlfrescoOne 5.0.0.5) and third party consumer, where third party consumer (in your case the legacy system that can consume and send only SOAP request/response only at this moment) sends the SOAP request to the middle layer, middle layer parses the request and then talks to alfresco repo over the REST (OOTB  REST APIs and custom develped) and returns the SOAP message back to consumer.

So may be you can try similar approach as an alternative if its viable for your business needs. 

Steps to follow:

1- Get the WSDL that DMS endpoint produces and used by the legacy system at present.

2- Implement a middle layer SOAP webservice. You can either use axis2 or jaxws and develop a spring boot app. Check some useful links below:

Developing soap webservice using spring boot:
https://spring.io/guides/gs/producing-web-service/
https://www.baeldung.com/spring-boot-soap-web-service

Apache Axis2 SOAP webservice:
https://javaworld-abhinav.blogspot.com/2016/11/quick-start-with-apache-axis2-soap.html
Sample soap webservice project: https://github.com/abhinavmishra14/soap-demo

3- Using the wsdl (as per step 1) develop the SOAP endpoints in the middle layer application in accordance with the legacy system's expectations in terms of request and respose it needs. Middle layer will get soap request, parse the request and then call Alfresco's rest apis, prepare the soap response upon response from alfresco's rest apis and return the soap response back to legacy system.

4- Deploy the middle layer on same host where alfresco is deployed or on different host making sure middle layer is able to connect to alfresco. Test the services via soap client/soapui etc. 

5- Integrate with legacy system

~Abhinav
(ACSCE, AWS SAA, Azure Admin)

View answer in original post

5 REPLIES 5

thanks for responding @sanjaybandhniya , the requirement is other way. In our case alfresco need to expose soap endpoint instead of invoking soap endpoint. we are looking to enable soap endpoint to serve content from alfresco. The documentation is other way it seems. please correct me

abhinavmishra14
World-Class Innovator
World-Class Innovator

Refer this documentation: https://docs.alfresco.com/5.2/pra/1/concepts/cmis-bindings.html

It says that there is SOAP webservice binding available via CMIS. Check to see if it works for you. I am not sure if it even works.

I worked with a similar requirement couple of years ago and i choose to write a SOAP webservices middle layer between Alfresco repo (AlfrescoOne 5.0.0.5) and third party consumer, where third party consumer (in your case the legacy system that can consume and send only SOAP request/response only at this moment) sends the SOAP request to the middle layer, middle layer parses the request and then talks to alfresco repo over the REST (OOTB  REST APIs and custom develped) and returns the SOAP message back to consumer.

So may be you can try similar approach as an alternative if its viable for your business needs. 

Steps to follow:

1- Get the WSDL that DMS endpoint produces and used by the legacy system at present.

2- Implement a middle layer SOAP webservice. You can either use axis2 or jaxws and develop a spring boot app. Check some useful links below:

Developing soap webservice using spring boot:
https://spring.io/guides/gs/producing-web-service/
https://www.baeldung.com/spring-boot-soap-web-service

Apache Axis2 SOAP webservice:
https://javaworld-abhinav.blogspot.com/2016/11/quick-start-with-apache-axis2-soap.html
Sample soap webservice project: https://github.com/abhinavmishra14/soap-demo

3- Using the wsdl (as per step 1) develop the SOAP endpoints in the middle layer application in accordance with the legacy system's expectations in terms of request and respose it needs. Middle layer will get soap request, parse the request and then call Alfresco's rest apis, prepare the soap response upon response from alfresco's rest apis and return the soap response back to legacy system.

4- Deploy the middle layer on same host where alfresco is deployed or on different host making sure middle layer is able to connect to alfresco. Test the services via soap client/soapui etc. 

5- Integrate with legacy system

~Abhinav
(ACSCE, AWS SAA, Azure Admin)

thanks @abhinavmishra14  for providing directions. cmis soap link is not working. I get 404 not found error. 

doc link could be wrong, however we are thinking to go the route you mentioned as it will enable us to scale in a better way. I will update here when we finalize