What is AlfStream

AlfStream is a synchronisation engine to allow one Alfresco instance to synchronise externally to other instances, or completely different systems.

It is a ready made solution to integrate an Alfresco repository into other independent systems.

Why Would I need it?

There are a few use cases that AlfStream provides a solution for:

  • You have remote offices, each with their own Alfresco instance, and you want to ensure that your documents remain in sync between instances
  • You want to migrate from a legacy repository into Alfresco, but you might need to have a transition period where changes are reflected in both systems
  • You want events in Alfresco to trigger changes in other systems, such as publishing to a website, or executing business processes

How does it work?

Alfstream has two main components:

  • An Alfresco Module plugin which is installed into Alfresco
  • An Apache Camel Component with a set of predefined routes for common scenarios

AlfStream turns an Alfresco repository into a more transactional event-driven system. This can be seen as a form of stream processing, or an application of the Event Sourcing design pattern. It does this by creating two main RESTful API endpoints for updating and reading events in Alfresco.

What AlfStream is at its core is a way to subscribe to a stream of events that occur in Alfresco: creates, reads, updates and deletes, which can be synchronised with another system. Every time an change is taken within Alfresco, an event is triggered, so that anything observing these events can act upon them accordingly.

Rather than define upfront what systems can observe events from Alfresco, we instead have created an Apache Camel Component, which allows us to decouple and apply Enterprise Integration Patterns so that it can be integrated into virtually any external line of business application or other system. The AlfStream camel component will connect to an Alfresco repository and generate exchanges for all the nodes within a repository. It can also submit exchanges to Alfresco, so that updates can be made.

So we don’t have system administrators cover common ground, or invest a lot of time in configuration, we do include some of the most used and battle-tested scenarios, such as syncing to a file system and two-way replication. AlfStream is divided up into an AMP (Alfresco Module Package) that is installed within the Alfresco repository, and a camel component that can be installed and used within a Camel Runtime, such as Apache Karaf.