Commit 16fdc78e authored by peter's avatar peter

Include Alfstream Trial and Alfstream sync doco

parent 9b3b71d3
# Alfstream Sync Change Log
This is the change log for Parashift's [Alfstream Sync Module](../paramodules/
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](
## [1.2.0] 2017-6-27
### Added
* When a node sync failed, an email notification will be sent to site managers of site that contains node in question
* `Retry Syncing` action is added to allow user retry the sync after issue has been fixed
* Add `onException` clause in camel route of two way sync blueprint file to capture thrown exception during sync process
* Providing scheduled auto retry feature, you can choose to enable it or not and how often do you want it to run, by default this feature is disabled, if it's enabled, the default retry period is every 15 mins
### Fixed
* Content in `My Files` can't be synced correctly
## [1.0.3] 2016-11-28
### Fixed
* Delete a non-synced document will not trigger its counterpart to be deleted in the other end
* Moved in nodes will have their sync state set correctly based on the state of parent node
* Update child nodes' sync state only when necessary
## [1.0.2] 2016-11-25
### Fixed
* Now when parent folder's sync state is change, its children documents' sync state are changed as well
## [1.0.1] 2016-11-25
### Fixed
* Document now will not be syncing after `Stop from Syncing` action is selected
## [1.0.0] 2016-11-11
Initial Release
......@@ -4,6 +4,12 @@ This is the change log for Parashift's [Alfstream Module](../paramodules/alfstre
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](
## [1.9.1] 2017-07-14
### Fixed
* Empty String values are now synchronised across again (prevented site synchronisation with an empty description)
## [1.9.0] 2017-07-04
### Added
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns=""
xsi:schemaLocation=" ">
<cm:property-placeholder persistent-id="com.parashift" />
<bean id="preventEcho" class="com.parashift.alfstream.PreventEcho" />
<bean id="debugLog" class="com.parashift.alfstream.DebugLog" />
<camelContext id="twoWayAlfStream" xmlns="">
<route id="remoteToLocal">
<from uri="alfs://{{alfstream.local.url}}?aspects=alfs_sync&amp;username={{alfstream.local.username}}&amp;password={{alfstream.local.password}}" />
<onException id="syncFailureNotification">
<to uri="direct:syncException"/>
(request.headers.get('NodeEventType') == 'DELETE' &amp;&amp; request.headers.get('alfs_syncState') != 'Not Synced') ||
request.headers.get('alfs_syncState') != 'Not Synced'
<method ref="preventEcho"/>
<setHeader headerName="alfs_syncState">
result = request.headers.get('alfs_syncState');
if(result != 'Active') {
result = 'Not Synced';
<bean ref="debugLog" />
<to uri="alfs://{{alfstream.remote.url}}?username={{alfstream.remote.username}}&amp;password={{alfstream.remote.password}}" />
request.headers.get('alfs_syncState') == 'Not Synced'
<simple>Stop sync</simple>
<bean ref="debugLog" />
<to uri="alfs://{{alfstream.local.url}}?skipCheck=true&amp;username={{alfstream.local.username}}&amp;password={{alfstream.local.password}}" />
<route id="syncFailureNotification">
<from uri="direct:syncException"/>
<setHeader headerName="alfs_lastSyncSuccessful">
<simple resultType="java.lang.Boolean">false</simple>
<setHeader headerName="exception_message">
<setHeader headerName="alfs_lastSyncStatus">
result = request.headers.get('exception_message');
if (result.indexOf('503') > 0 || result.indexOf('502') > 0) {
result = 'Remote Service is Unavailable';
} else if (result.indexOf('404') > 0) {
result = 'Request Resource cannot be Found';
<setHeader headerName="Aspects">
aspects = request.headers.get('Aspects');
aspects = aspects;
<bean ref="debugLog" />
<to uri="alfs://{{alfstream.local.url}}?skipCheck=true&amp;username={{alfstream.local.username}}&amp;password={{alfstream.local.password}}" />
<route id="authoritySync">
<from uri="alfs://{{alfstream.local.url}}?username={{alfstream.local.username}}&amp;password={{alfstream.local.password}}&amp;types=cm_person,cm_authorityContainer" />
<bean ref="debugLog" />
<to uri="alfs://{{alfstream.remote.url}}?username={{alfstream.remote.username}}&amp;password={{alfstream.remote.password}}&amp;types=cm_person,cm_authorityContainer" />
# Parashift AlfStream Trial Module
The Parashift AlfStream Trial Module is a 30 day trial for AlfStream which includes the following:
* Alfstream
* Alfstream Sync
* Parashift Version Service
You can request a free 30 day trial by [filling out the form here](
## Usage
Usage is the same as [AlfStream Sync](, but the installation is more streamlined.
## Setting up trial instances
It is recommended to use our Salt formulas to install the trial instances. This is the official way to install AlfStream and is easy to configure and run.
The Trial requires Internet Connection for each instance for Activation.
When you set up a trial, you will be provided with:
* A token for the trial subscription which will expire normally within 30 days
* A copy of the Alfstream Trial amp for both `share` and `repo` sides of Alfresco
* A copy of the Alfstream Trial kar for running the camel route within Apache Karaf
### Automatic Setup
You can automatically have both instances set up using Salt Stack and our Salt Formulas.
The automatic setup will:
* Install Alfresco with the Alfstream Trial module
* Install Karaf with the Alfstream Trial routes
#### Requirements
You will need:
* The trial token provided to you by Parashift
* 2 Blank Virtual Machines with either:
* CentOS or Redhat 6/7
* Ubuntu LTS 14.04 or 16.04
* The hostnames of each server for the configuration
#### Installation
On Each server, run the following commands, to install salt formulas:
curl -L -o
sudo sh
Create a salt pillar formula, storing it at `/srv/pillar/local.sls` with the following contents, changing `alfresco.remote.url` to the hostname of the other server:
- alfresco
- karaf
token: ucephijp23v2nmvroldcg0jmha
- alfresco:dynamic-extensions:1.4.2
- parashift:alfstream-trial:1.2.1
- parashift:alfstream-trial:1.2.1
version: 5.2.0
solr: True
- alfstream.remote.url=http://sideb.parashift.local:8080/alfresco
- alfstream.remote.username=admin
- alfstream.remote.password=admin
- alfstream.local.url=
- alfstream.local.username=admin
- alfstream.local.password=admin
Reverse the `local` and `remote` configurations for the other server so that they can talk to eachother.
Run the following:
salt-call --local state.highstate
### Manual setup
You can manually install the amps and kar files to Alfresco and Karaf if you have more specialised environments.
#### Alfresco Setup
You will need to install Alfresco as per normal [instructions here](../setup/
For the AMP installation, the following will be required on the repo end:
* Alfresco Dynamic Extensions:
* Parashift Alfstream Trial Repo AMP
The following will be required on the share end:
* Parashift Alfstream Trial Share AMP
#### Karaf Setup
You will need to follow this step on both sides:
* Follow the instructions for installing Karaf from the Quickstart here: [Karaf Manual](
* Create a or update the config file at `/<path_to_karaf_install>/etc/com.parashift.cfg` with the following properties:
* `alfstream.local.url`: the Local alfresco instance (normally localhost, but could be a different server)
* `alfstream.local.username`: the Local alfresco admin username
* `alfstream.local.password`: the Local alfresco admin password
* `alfstream.remote.url`: the Remote alfresco instance
* `alfstream.remote.username`: the Remote alfresco admin username
* `alfstream.remote.password`: the Remote alfresco admin password
As an example:
* Add the provided Camel KAR file from the trial link into the `deploy` directory
\ No newline at end of file
......@@ -40,6 +40,12 @@ pages:
- Module Installation: 'setup/'
- Paramp: 'setup/'
- Para Modules:
- AlfStream:
- Readme: 'paramodules/'
- Alfstream Sync: 'paramodules/'
- Alfstream Trial: 'paramodules/'
- Change log: 'changelogs/'
- Change log - Alfstream Sync: 'changelogs/'
- Document Linking:
- Readme: 'paramodules/'
- Change log: 'changelogs/'
......@@ -79,6 +85,3 @@ pages:
- Orbeon Forms Persistence:
- Readme: 'paramodules/'
- Change log: 'changelogs/'
- AlfStream:
- Readme: 'paramodules/'
- Change log: 'changelogs/'
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment