Alfresco TCS

Transparent Content Services(TCS) and Manage In Place(MIP)

Transparent Content Services is an Alfresco module that enables Manage in Place capabilities using 3Sixty's content services. Meaning, you can manage multiple repositories through Alfresco, without having to move the file contents.

In the following sections we'll walk you through how to add TCS to your Alfresco instance, and configure jobs to create MIP Content. The addition of MIP will have no effect on your current content. The latest version of TCS is the most compatible version that works with the latest version of Alfresco.

If you prefer to follow a walk through, one can be found here

Note:   If you're currently using an extension that extends or adds to the existing StoreSelectorAspectContentStore there will be functionality and compatibility issues as TCS Overrides that service.


TCS: How it works

TCS works as a new content store that leverages 3Sixty's REST API to push and pull content.

By extending Alfresco's StoreSelectorAspectContentStore, we give users the ability to change the location of the content managed by Alfresco.

Similar to the standard store selector store, a user can change the content store of an item by simply adding an aspect and changing a property.

This plugin goes far beyond adding new Filesystem store locations. TCS provides access to any repository listed in your Content Service Connections

Configured connections from 3Sixty will be added to the list of available stores in the cm:storeName property.


TCS: FAQS

How do we get content into Alfresco?

There are several ways to add the content to Alfresco for TCS to manage. Two easy and popular methods are:

Use a 3Sixty job to connect to your source repository and output content to Alfresco via a CMIS connector.

  1. This method is good for smaller batches of content (100s and thousands but not hundreds of thousands)

  2. Fast set up and ingestion.

Use a 3Sixty job to connect to your source repository and output to BFS format. Leverage the BFS import tool to create content in Alfresco

  1. Ideal for very large data sets.

Remember, we are only importing information about the location of the content and some metadata. The import process is very fast.

How are my Alfresco users affected by this change?

They won't be. All the standard content features are available. Meaning users can still preview, download, and update content from within Alfresco.

What if I don't want users to change content in my remote system?

TCS provides an option to implement read-only mode. This is done when configuring a new store (see below). You also must set the deep delete option if you want to allow Alfresco (and 3Sixty) to delete source content.


TCS Installation

Important:  Prerequisites
1. Alfresco Enterprise version 6.2+
2. Alfresco Record's Management/Alfresco Governance Services
3. 3Sixty 3.X+
4. TCS Plugin Jars (Contact support to get these)

Files

  • transparent-content-services-share.jar

    • This file contains the Share customisations for Alfresco.

  • transparent-content-services-platform.jar

    • This file contains the core repository extensions and the content services required to communicate to 3Sixty

Installation Process

Inside the Tomcat folder which contains ACS (referred to as TOMCAT_HOME), add the following folders if they do not exist

Copy
/modules/platform
/modules/share
  1. Stop Alfresco

  2. Place the transparent-content-services-platform in [TOMCAT_HOME]/modules/platform

  3. Place the transparent-content-services-share.jar in [TOMCAT_HOME]/modules/share

  4. Once you have completed the configuration (see the next section), start Alfresco.


TCS Logging

In order to see all the logging for TCS in the alfresco.log or catalina.out file the following appender must be added to Alfresco's log4 properties.

Copy
com.fikatechnologies

The options are info, debug, or trace, in order of granularity.


TCS Configuration and Properties

The properties marked as required should be added to your alfresco-global.properties file. The rest are optional configuration

TCS Basic Properties (Required)

  • tcs.user: The 3Sixty username. Default: admin

  • tcs.pass: The 3Sixty password. Default: admin

  • tcs.url: The full url to 3Sixty's Admin application. Default: http://localhost:8080/3sixty-admin

  • tcs.read.timeout: The amount of time the connection to 3Sixty should wait on a read operation before timing out.

  • tcs.connect.timeout: The amount of time the attempt to make a connection to 3Sixty will wait before timing out.

  • tcs.defaultStoreName: The name that will be given to the default filestore. Should just be, DefaultStoreName except for special circumstances.

  • tcs.connectorIds: A comma(,) delimited list of content service connector IDs that should be included in TCS.

3Sixty Batch API Properties (Required)

  • batchapi.behaviours.disableall: If this is false, reattempts to import data can cause an infinite loop.

  • batchapi.rules.disableall: If this is false, reattempts to import data can cause an infinite loop.

    Important:  RULES AND BEHAVIORS
    Both of these values must be true to avoid conflicts with Alfresco's content store rules and behaviour

  • batchapi.jsonthreadcount: The amount of threads to delegate to the json batch integration queue. Default: 20

  • batchapi.batchthreadcount: The amount of threads to delegate to the batch integration queue. Default: 50

  • batchapi.userid: The Alfresco User to perform the Batch API actions as. Must be a valid Alfresco user. Default: admin

  • batchapi.licensekey: This property is Required and does NOT have a default. The license key of the 3Sixty instance you are connecting to. This does not have a default. Jobs will not write batches to Alfresco if this value is not set with a valid license key

TCS Basic Content Caching Properties (Optional)

These are a series of properties that control various levels of caching. TCS Caches some basic information during runtime by default to improve performance. It can also store those properties as a manifest, and can also cache and store content on the local filesystem. There a button is available in the TCS Admin console found in the TCS Admin Console

  • tcs.cache.content.enabled: (true or false) Tells TCS whether to cache and store content. These cached files will be used to generate faster previews

  • tcs.cache.content.dirLocation: (String/filepath) When content caching is enabled. The root folder where content is cached. The folder paths are in the structure of (fileLocation)/yyyy/MM/dd/HH. Will use java.io.tmpdr/temp if left blank

  • tcs.cache.content.maxCacheFileSize: (long) When content caching is enabled, the max number of bytes before the cache is partially cleared (makes an estimate of what potential file size will be). Default is 5000000 (around 5 MB)

  • tcs.cache.content.maxCacheEntries: (integer) The number of entries held in the content cache. Default is INTEGER.MAX (around 2 billion)

  • tcs.cache.content.daysToKeep: How many days before the cache is cleared. Default is 3

  • tcs.cache.manifest.enabled: (true or false) - Tells TCS whether to store the cache in a manifest. The manifest will be used to persist the cache between restarts of Alfresco

  • tcs.cache.manifest.fileLocation: (String/filepath) - The location of the manifest file. Created on shutdown and attempted to load on start-up. Allows the cache to persist through shutdown.

  • tcs.cache.manifest.maxCacheFileSize: (long) When manifest cache storage is enabled, the max number of bytes before the cache is partially cleared (makes an estimate of what potential file size will be). Default is 5000000 (around 5 MB)

  • tcs.cache.manifest.maxCacheEntries: (integer) When manifest storage is not enabled, the number of entries held in the cache. Default is INTEGER.MAX (around 2 billion)

  • tcs.cache.manifest.daysToKeep: -(integer) How many days before the cache is cleared. Default is 3

TCS Content Caching Encryption Properties (Optional)

Note:  Currently, TCS Cache Encryption Only supports one alias, so if a keystore contains more than one alias, only the one designated in the property, will be used.

  • tcs.cache.encryption.enabled - (true or false) - Tells TCS whether to use encryption on its caches. Defaults to false.

  • tcs.cache.encryption.providerName - (String) - The JCE Security provider to use. Optional. Leave blank for default (In most cases this should stay blank)

  • tcs.cache.encryption.keystore.type - (String) - The Type of Keystore being used. Defaults to JCEKS. Required if Encryption Enabled.

  • tcs.cache.encryption.keystore.path - (String) - The Absolute Path to the keystore file.Required if Encryption Enabled.

  • tcs.cache.encryption.keystore.password - (String) - The Password for the Keystore itself.Required if Encryption Enabled.

  • tcs.cache.encryption.key.alias - (String) - The Alias of the key to use in the keystore.Required if Encryption Enabled.

  • tcs.cache.encryption.key.password - (String) - The Password to the key for the Alias provided.Required if Encryption Enabled.

  • tcs.cache.encryption.key.algorithm - (String) - The Key Algorithm used. Defaults to AES.Required if Encryption Enabled

3Sixty Content Service Connection Properties (Optional)

This is the only TCS Configuration that takes place inside 3Sixty Admin The content service connectors used for TCS have a few parameters that can be set in the Connection Configuration tab by clicking Add Custom Parameter.

  • deepDelete- If true, deleting content in Alfresco will also delete it in the source repository. (Default=true)

  • readOnly - If true, you will not be able to edit files or upload documents through Alfresco. (Default=false)

  • root_folder- Dictates where content will be pushed to when a file is uploaded in Alfresco. If blank, the content service connector will use the Alfresco path. Some content service connectors create this value as a default.


Setting up MIP Jobs in 3Sixty

Once all the configuration is out of the way, setting up MIP Jobs only requires a few additions to the standard job configuration

  1. In the Job Details tab, a content service connector for the source repository must be set.

  2. In the Job Details tab under Advanced Settings, Include Binaries should not be checked.

  3. In the Alfresco Output Specification, Create Content Url Always must be checked.

  4. The following mappings are required for all MIP jobs.

Copy
{"mappings":[{"sourceType":"TEXT","watch":"false","mappingType":"CALCULATED_FIELD","targetType":"TEXT","source":"'#{rd.fileName}'","position":0,"target":"cmis:name"},{"sourceType":"TEXT","watch":"false","mappingType":"ASPECT_MAPPING","targetType":"TEXT","source":"Document","position":0,"target":"cm:storeSelector"},{"sourceType":"TEXT","watch":"false","mappingType":"CALCULATED_FIELD","targetType":"TEXT","source":"'#{rd.simflofyContentServiceConnector}'","position":0,"target":"cm:storeName"}]}

They can be added all at once using the Import Mappings button. Just paste and save.

Tip:  JOB MAPPING
If 3Sixty was run with initialize.bootstrap=true as of 3.1, this mapping will be included as a preloaded Job Mapping.


TCS Admin Console

The admin console for tcs can be found at [alfrescoUrl]/alfresco/service/enterprise/admin/tcs-admin

It will display the currently configured content stores which are available for MIP operations, as well as provide a chart breaking down the number of documents stored in each 3Sixty content store.

The Connect To 3Sixty button will re-run the process of building the store selector and adding content stores. This can be useful if you need to alter the Content Service Configuration for a store (see the properties tabs)

If no content stores appear when loading the page or after hitting the button, there is an issue with your configuration, and you should check the logging to see if any notable errors showed up. Make sure you have your TCS Logging set.

It also has a button which will clear the current cache.


Related Articles

Alfresco Batch API

Alfresco Connector