Skip navigation
All Places > Alfresco Content Services (ECM) > Blog > 2018 > July
2018

The end of July comes with great news, folks! We have officially released Alfresco Governance Services 3.0. Governance Services? Yes, this release is all about changes! Records Management has upgraded its name along with a few other things like dependencies and the way of deploying the final product. 

 

Among the changes, by far the most important changes are compatibility with ACS 6.0(RM-6410,  RM-6135) including the removal of SDK and H2(RM-6295), upgrading to Spring 5(RM-6314) and starting using a containerized deployment environment with Docker (RM-6138).

 

Why Docker and a containerized environment?

 

A containerized deployment brings the advantage of deploying the product faster on any environment. As part of our release, we are publishing the community images to Docker Hub and Quay.io, and the enterprise ones only to Quay.io.

 

The images can be downloaded from these locations and used in a blink of an eye no matter on what environment. Based on your needs, you can choose to download the AGS repository image by itself, or also download the AGS Share image if you want to use our UI.

 

What's new in 3.0?


Alfresco Governance Services as you see has rebranded and continues with a series of changes. As mentioned in the last release, the most awaited change was the compatibility with ACS 6.0 which came with loads of upgrades when it comes to dependencies. The compatibility changes consisted in updating the schedulers(RM-6313) and the Jackson library(RM-6315), removing Hibernate(RM-6316) and upgrading the Spring  version(RM-6314).

 

Another new thing that you will enjoy is the continuously updated Docker images we're creating from our builds. For every successful build, new AGS repository and AGS Share docker images are created with the latest tag, then they are pushed to Quay.io and also on Docker Hub for the community ones. Also at every new release, the AGS images will be published with the tag containing the release version.

To get our community images check AGS-repository and AGS-share for the latest versions.

 

What's coming up next?


We've been working closely with some of you to address your needs and concerns, and our near future plans reflect that. We're working on integrating AGS Enterprise with Amazon Glacier, to open up access to long term cost effective storage for records and other content. This is the next step in our drive to improve and develop Alfresco's Information Lifecycle Management functionality.

Alongside that new module, we'll improve our build infrastructure in order to be able to release faster, and have a series of planned incremental improvements to our core RM features, based on feedback from the field. Keep an eye on JIRA for details of those.

 

We hope that this release was as you expected it to be and we hope to keep you excited about what’s coming up next too. If you have anything that you would like to know about the current release or if there’s anything you would like to see in the near future please let us know.

 

You can use any channel to contact us like using the comments below or writing a message to any of the team members.

 

 

Links

 

In this blog post I'm going to share how to deploy the brand new Alfresco Content Services Community Edition 201806 GA Release. The new deployment mechanism, announced as major change in the ACS 6.x version, discontinued the traditional wizard and introduced a new Dockerized deployment for the benefit of the Developers and DevOps. The manual  installation using the ZIP file containing the artifacts is still available and can be downloaded here.

 

Disclaimer: The intent of this blog post is to share a simple tutorial for the newbies on Alfresco Content Services, where to learn how to rapidly start to launch and using it. A lot of official and unofficial documentation is available (for free) in this community portal (and outside of it). Please refer to the 'Other resources' paragraph, for further details.

 

Deploying ACS using Docker compose

 

All the task con be easily completed thanks to the acs-community-deployment project, publicly available on Alfresco's GitHub account.

Please be sure you are pointing on the TAG 1.0.0 of the GitHub project, using the Alfresco Content Services Community Edition 201806 GA version. 

To deploy Alfresco Content Services Community Edition 201806 GA using Docker compose, the only prerequisites are about having Docker and Docker Compose available, with enough resources into you environment. Once done, you can follow complete the task following the list below.

 

  1. Clone the acs-community-deployment project (related to TAG 1.0.0) or download the source code from this link. As alternative, you can download the single file docker-compose.yml (but check you are using the one tagged with 1.0.0).
  2. Navigate to the folder where the docker-compose.yml file is located.
  3. Run docker-compose up.
  4. Open the following URLs in your browser to check that everything starts up:

 

You can now start using Alfresco Content Services opening a browser to the URL http://<machine_ip>:8080/share.

 

Note:

  • Make sure ports 5432, 8080, 8082, and 8083 are open. These are defined in the docker-compose.yml file.
  • If Docker is running on your local machine, the IP address will be just localhost.
  • If you're using the Docker Toolbox, run the following command to find the IP address:
docker-machine ip
  • If you run docker-compose up after deleting a previous Docker Compose cluster, then replace step 3 with the following command:
docker-compose down && docker-compose build --no-cache && docker-compose up

 

Other resources

 

 

Support and questions and answers


Something is not working properly?
Do you need support or have questions?

 

If this is the case raise a question here or join the community on Discord (channel: alfresco) or IRC.

 

See you there!

This article is about modules for the ACS repository and does not cover Share. Share modules from previous Alfresco versions can be deployed to ACS 6 without modifications.

 

This article describes how to migrate Alfresco SDK 3 based projects alfresco-platform-jar-archetype to Alfresco SDK 3 projects including the new dependencies from ACS 6. However, as a third party developer, it might be a lot easier for you to wait for the next version of the official Alfresco SDK.

 

Step 1: Upgrade Alfresco and Share versions

 

Find following properties in your original pom.xml file...

 

<alfresco.platform.version>5.2.f</alfresco.platform.version>
<alfresco.share.version>5.2.e</alfresco.share.version>

 

... and replace the values with the following numbers...

 

<alfresco.platform.version>6.0.7-ga</alfresco.platform.version>
<alfresco.share.version>6.0.b</alfresco.share.version>

 

Step 2: Change Alfresco distribution dependency name

 

Identify Alfresco distribution dependency in your original pom.xml file...

 

<dependency>
    <groupId>${alfresco.groupId}</groupId>
    <artifactId>alfresco-platform-distribution</artifactId>
    <version>${alfresco.platform.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

 

...and replace the name by using the following entry...

 

<dependency>
    <groupId>${alfresco.groupId}</groupId>
    <artifactId>alfresco-content-services-community-distribution</artifactId>
    <version>${alfresco.platform.version}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

 

From this point you can compile and package your addon for ACS 6. 

 

Step 3: Refactor your code where required

 

Updates that might affect your custom code are (among others):

 

  • Spring
  • Quartz
  • POI
  • Jackson
  • multiple commons-* libraries

 

Removed libraries:

 

  • Hibernate

 

ACS 6 Migration Guide wiki page collects useful information about updating Java code to work with the ACS6 repository.

 

Conclusion

 

These simple instructions can be applied to upgrade your repository addons to ACS 6, but Alfresco will release a detailed guide for migration procedures in the future. 

The new Alfresco Content Services 6.0 is released, and I am happy to share the highlights of this version with you. The major focus of the new Alfresco Content Services 6.0 release was on significant architecture improvements and the new containerized deployment option based on Docker and Kubernetes.

Containerized deployment

With Alfresco Content Services 6.0, we provide more flexible deployment options including Docker & Kubernetes for fast and standardized deployments across all environments.

For those that prefer the more traditional way of installing Alfresco Content Services or its Community version, we - of course - continue to deliver the WAR files for a manual deployment. But for now, let’s focus on the new containerized deployment with Docker and Kubernetes.

 

Why have we invested in containerized deployments?

A number of customers and also users in the open source community requested containerized deployment options in the past. The advantages are obvious, it allows development and operations teams to move faster and deploy software in a more efficient way. Containers provide a consistent environment and support DevOps to accelerate development and deployment from the test environment through a staging system to production.  

 

Do you want to give it a try?

You can test the new improvements around Docker and Kubernetes either with the Community version or start a 30 day free trial of the enterprise version (https://www.alfresco.com/platform/content-services-ecm/trial/download ).

 

Which Alfresco images exist?

The screenshot below shows the currently available Alfresco images that provide:

  • Core parts of Alfresco Content Services like “alfresco-share”, “alfresco-search-services” or the “alfresco-content-repository”
  • Some supporting functionality, e.g. for image or document transformation

 

 

How to start with Docker?

With the new release of Alfresco Content Services 6.0, it is now possible to deploy the product from a number of Docker images as described above. But it would be a time-consuming and also complex task to deploy individual Docker containers based on these images. Furthermore, you’d have to do the configuration to make them work together.

Therefore, the recommended way is to use a docker-compose file to get to a “one-click to deploy” experience. A docker-compose file describes the containers of the environment and starts those containers.

This allows you to quickly deploy and run Alfresco Content Services with just a few commands:

 

$ git clone https://github.com/alfresco/acs-deployment.git

$ cd acs-deployment

$ git checkout 1.0.2

$ cd docker-compose

$ docker-compose up

 

A docker-compose file for testing and development purposes is also available at https://www.alfresco.com/platform/content-services-ecm/trial/download 

 

How to start with Kubernetes?

For production environments, we recommend to orchestrate our containers in a kubernetes cluster. It automates tasks like deployment, but also takes care of scaling and managing the containers in the cluster.

Alfresco uses the HELM package manager to provide production-grade reference deployments that can be adopted to your needs. We publish these Charts through our https://kubernetes-charts.alfresco.com/stable HELM Chart repository.

 

In many cases, the HELM charts can act as a reference for customized deployments; by basing deployments on the official HELM charts, customers can benefit from the extensive functional and security testing performed by Alfresco (HELM chart releases).

 

Where to get further information?

Here, you’ll find extensive documentation:

 

Code Organization

The top-level entry-point for building ACS Enterprise has been moved from Subversion to the Alfresco Content Services Packaging project in GitHub (https://github.com/Alfresco/acs-packaging).  Enterprise customers will be able to build the artifacts from scratch provided they have access to the enterprise-releases Nexus repository.

The intention of this restructuring was the following:

  • The code base was split into smaller projects that produce intermediate artifacts with their own versioning
  • The naming of the artifacts changed. The top-level artifacts include the following indicators in their names:
    • "community" to clarify that they are open source
    • "content-services" if they are Enterprise artifacts
    • “-ea” if they are early access versions

 

REST APIs

This release includes an updated version of the REST API Explorer to navigate the new REST APIs. Those developers that are new to Alfresco should have a closer look at the options the updated REST API provides.

Further information and a full documentation for each endpoint is available at our online REST API Explorer: https://api-explorer.alfresco.com/api-explorer

Use the userid admin and password admin if you're are using the online REST API explorer. To explore the operations on a specific entity just click on it (“favorites in this case):

 

If you are using the docker-compose file for development, the api-explorer application will soon be integrated into that.

 

Anonymous Usage Metrics via Heartbeat

Alfresco Content Services sends anonymous usage metrics to Alfresco through the Heartbeat service. We already used this anonymous information in the past to help understand the usage of our products and to better meet the needs of your organization.

We have been improving the Alfresco Heartbeat to report more detailed information so that we can evolve the product in ways that provide the most value to our customers. As part of this process, we are including the new heartbeat also in the Alfresco Community Edition so that we can better understand how our open source community interacts with the product. This will allow us to better include the needs of both - our customers and our open source community - in our roadmap discussions and decision making process.

Further information around our updated Alfresco Heartbeat is available in our online documentation at https://docs.alfresco.com/6.0/concepts/heartbeatintro.html.

 

Library Upgrades

With Alfresco Content Services 6.0, we introduced a few library upgrades to ensure ongoing security and to have the ability to leverage more capabilities in future releases. A number of underlying third-party libraries have been updated in both the Repository and Share.

This post is a possible fix to this errors:

 

ImageMagickContentTransformerWorker not available: 06020018 

 

06020006 The content node was not specified so the content cannot be streamed to the client: classpath*:alfresco/templates/webscripts/org/alfresco/repository/thumbnail/thumbnail.get.js on WINx64

 

1º.- Modify setenv.bat:

 

set MAGICK_CONFIGURE_PATH=C:\alfresco-community\imagemagick\modules\coders

 

2º.- Modify alfresco-global.properties

 

img.root=C:/ALFRES~1/imagemagick
img.dyn=${img.root}/lib
img.exe=${img.root}/convert.exe
img.coders=${img.root}/modules/coders
img.config=${img.root}/config

#img.gslib=${img.root}/lib   <- COMMENT THIS

 

3º.- Create 2 custom xml files in  alfresco-community\tomcat\shared\classes\alfresco\extension

 

custom-alfresco-pdf-renderer-transform-context.xml

 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>

<bean id="transformer.worker.subsys.alfresco-pdf-renderer" class="org.alfresco.repo.content.transform.pdfrenderer.AlfrescoPdfRendererContentTransformerWorker">
<property name="mimetypeService">
<ref bean="mimetypeService" />
</property>
<property name="executer">
<bean name="transformer.alfresco-pdf-renderer.command" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandsAndArguments">
<map>
<entry key=".*">
<list>
<value>${alfresco-pdf-renderer.exe}</value>
<value>SPLIT:${options}</value>
<value>${source}</value>
<value>${target}</value>
</list>
</entry>
</map>
</property>
<property name="processProperties" ref="#{systemProperties['os.name'].contains('Windows') ? 'transformer.worker.subsys.alfresco-pdf-renderer.processPropertiesWindows' : 'transformer.worker.subsys.alfresco-pdf-renderer.processPropertiesUnix'}" />
<property name="defaultProperties">
<props>
<prop key="options"></prop>
</props>
</property>
<property name="errorCodes" >
<value>1</value>
</property>
</bean>
</property>
<property name="checkCommand">
<bean name="transformer.Pdfium.CheckCommand" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandsAndArguments">
<map>
<entry key=".*">
<list>
<value>${alfresco-pdf-renderer.exe}</value>
<value>--version</value>
</list>
</entry>
</map>
</property>
</bean>
</property>
</bean>

<bean id="transformer.worker.subsys.alfresco-pdf-renderer.processPropertiesWindows" class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="sourceMap">
<map>
<entry key="ALFRESCO-PDF-RENDERER_HOME">
<value>${alfresco-pdf-renderer.root}</value>
</entry>
</map>
</property>
</bean>

<bean id="transformer.worker.subsys.alfresco-pdf-renderer.processPropertiesUnix" class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="sourceMap">
<map>
<entry key="ALFRESCO-PDF-RENDERER_HOME">
<value>${alfresco-pdf-renderer.root}</value>
</entry>
</map>
</property>
</bean>

</beans>

 

custom-imagemagick-transform-context.xml

 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>

<bean id="transformer.worker.ImageMagick" class="org.alfresco.repo.content.transform.magick.ImageMagickContentTransformerWorker">
<property name="mimetypeService">
<ref bean="mimetypeService" />
</property>
<property name="executer">
<bean name="transformer.ImageMagick.Command" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandsAndArguments">
<map>
<entry key=".*">
<list>
<value>${img.exe}</value>
<value>${source}</value>
<value>SPLIT:${options}</value>
<value>-strip</value>
<value>-quiet</value>
<value>${target}</value>
</list>
</entry>
</map>
</property>
<property name="processProperties" ref="#{systemProperties['os.name'].contains('Windows') ? 'transformer.worker.ImageMagick.processPropertiesWindows' : 'transformer.worker.ImageMagick.processPropertiesUnix'}" />
<property name="defaultProperties">
<props>
<prop key="options"></prop>
</props>
</property>
<property name="errorCodes" >
<!-- The published error and fatal error codes are in the 400 and 700 ranges, but 1 is the most common and have seen 255 (could that by -1) -->
<value>1,2,255,400,405,410,415,420,425,430,435,440,450,455,460,465,470,475,480,485,490,495,499,700,705,710,715,720,725,730,735,740,750,755,760,765,770,775,780,785,790,795,799</value>
</property>
</bean>
</property>
<property name="checkCommand">
<bean name="transformer.ImageMagick.CheckCommand" class="org.alfresco.util.exec.RuntimeExec">
<property name="commandsAndArguments">
<map>
<entry key=".*">
<list>
<value>${img.exe}</value>
<value>-version</value>
</list>
</entry>
</map>
</property>
</bean>
</property>
</bean>

<bean id="transformer.worker.ImageMagick.processPropertiesWindows" class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="sourceMap">
<map>
<entry key="MAGICK_HOME">
<value>${img.root}</value>
</entry>
<entry key="MAGICK_CODER_MODULE_PATH">
<value>${img.coders}</value>
</entry>
<entry key="MAGICK_CONFIGURE_PATH">
<value>${img.config}</value>
</entry>
<entry key="DYLD_FALLBACK_LIBRARY_PATH">
<value>${img.dyn}</value>
</entry>
<entry key="LD_LIBRARY_PATH">
<value>${img.dyn}</value>
</entry>
</map>
</property>
</bean>

<bean id="transformer.worker.ImageMagick.processPropertiesUnix" class="org.springframework.beans.factory.config.MapFactoryBean">
<property name="sourceMap">
<map>
<entry key="MAGICK_HOME">
<value>${img.root}</value>
</entry>
<entry key="DYLD_FALLBACK_LIBRARY_PATH">
<value>${img.dyn}</value>
</entry>
<entry key="LD_LIBRARY_PATH">
<value>${img.dyn}</value>
</entry>
</map>
</property>
</bean>

</beans>

 

4º.- Restart TomcatServer

 

This fixed me the issue with thumbnails not working on Alfresco Community edition Windows 10 install (x64).

 

Let me know if it also works for you!

Filter Blog

By date: By tag: