Our company (www.alfstore.com) just delivered a new Widget component to integrate Jive (Enterprise Social Networking solution) with Alfresco ECM platform.
I think this project is a good example of how Alfresco social foundation can be integrated with another social software, dedicated to Enterprise social networking.
This Widget is in production now since a few days, used by one of the biggest French industrial company. basically, it gives Jive users the ability to browse and access Alfresco library from their Jive dashboard:
It’s a little bit too early to speak about this new Widget component features and its roadmap, but of course we plan to build an Enterprise supported version, for other customers.
So this post is not about the Widget itself (yes more technical communication will come later on), but about all the thinking that lead to the current v1.0 design, and why we have selected this approach to start with.
I think this might be of interest because this could apply to other similar projects of integration between Social Software, and ECM (not only Jive / Alfresco).
For people who have a very limited time to read, here is the synthesis of the approach:
ESN = Enterprise Social Networking Tool = Front-End = Place to collaborate around document
ECM = Foundation for Content Management = Back-End = Document Repository
Integration = ESN view component = Window to expose and browse ECM data
JIVE = Enterprise Social Networking Tool = Front-End = Place to collaborate around document
ALFRESCO = Foundation for Content Management = Back-End = Document Repository
Integration = JIVE Widget = Window to expose and browse ALFRESCO data
General questions about use-cases:
During the specification phase of the Jive-Alfresco widget, we had to address the following questions about the global design and the responsibility of each IT system:
Let’s assume my company uses both an ESN tool (like Jive), and an ECM tool (like Alfresco):
- For a new document (available on my desktop) : should I publish it in Jive first or in Alfresco first ?
- What about existing documents ? If the document is already in Jive, when and how (and why ?) should I push it to Alfresco ?
- If the document is already in Alfresco, how can I push it to Jive ?
- If I add a tag, a rating or a comment on an existing document, should I synchronize also this meta-data to the other system along with the doc binary ?
- When a document is moved from one system to another, should I keep a copy or a reference in the source system ?
- etc, etc, etc.
So we had to address some infra/IT questions, as well as functional questions…But the main question to answer first was: where should I finally store my document and/or data ?
Infrastructure perspective: ESN/ECM system responsibility
Actually, the answer to the previous question is quite obvious (at least for me).
Yes ESN systems are used to manage a lot of data (documents, images, video, etc)…but they are usually not designed as highly scalable data repository. They are primarily designed to improve collaboration, and to ease social networking.
Think about your youtube video : you will upload them first in youtube (youtube is the highly scalable storage), and then exposed them in your web site. So you can consider Alfresco as the youtube for documents, and Jive as the front-end application that needs to expose documents to allow collaboration.
So it was clear for us that the final document and data repository should be the Alfresco ECM system…But now, more and more, conversation will start in the ESN system first….how could we manage that ?
Document life cycle / Social and collaboration creation process
Actually, the good question about storage location and responsibility might be where should I store my documents in the short, middle or long term.
With new ESN systems, document creation will be more and more a collaborative process and documents will likely have to be moved from one storage to another during their life cycle. For instance:
- Short term: for a new “draft” document, the first storage location could now be ESN. The “document” could be already a draft document (word, excel, etc), but it could also just be a web piece of content (blog post, wiki page), or just an idea (forum discussion, comments).
- Middle term: once the document is “finalized”, it should be moved to the Document Management system (ECM). Document can still be modified, but less frequently. Security/Control are important here, because we need to have fined grain control on the reader audience.
- Long term: for long term storage, you might need to move the document in an archiving system.
So yes, you finally will have to deal with long term storage strategy/archiving, retention policies, security policies, etc…I know it’s not as fun as doing social networking, but you need to take care about your documents. You need some form of control to keep and manage this company knowledge in the long term so that someone else (another employee) could securely but easily find it, and could re-use it.
Important documents should not stay forever in your ESN system…otherwhise, you might loose informations…
Based on the previous architecture rules for document storage location, we have then defined the main principles and the selected approach in our case (for this Jive-Alfresco Widget). To summarize them quickly:
For an existing and finalized document (think word, excel, etc):
- User should store it in ECM (Alfresco) first.
- To collaborate around this existing document, go to your ESN tool (Jive),
- From Jive, browse your ECM document library (using our Widget of course !), get the ECM document reference (link) and use it to start a discussion, or include it in any ESN item (blog post, wiki page, etc).
For a “draft” document:
- It could be uploaded in ESN tool first (could be a draft, but it could also just be a web piece of content, or just an idea).
- ESN (Jive) is then the tool used to collaborate around document,
- Once the document is “finalized”, it should preferably be moved to the ECM system (Alfresco).
Operations on document:
Once the responsibility of each system is clearly defined, as well as use-cases, it is time to detail the operations available on documents/folders:
Basically, there are 4 main kinds of operations identified in our scenario:
- Browse ECM folders/documents (from the ESN interface),
- CRUD operation on document (from the ESN interface),
- Move document (from ESN to ECM system),
- Collaborate around document (using the ESN tool).
Browse ECM folders/documents from the ESN interface:
Basically, you need to build an ESN view component (Jive Widget in our case), and then use appropriate framework to build the dynamic view (Struts, YUI, etc).
For those who are familiar with Portal, a Widget is functionally “similar” to a Portlet.
CRUD operation on document/folder:
You need at least to implement the basic document management feature (create, update, delete, rename, etc), and to expose them in the ESN interface (Widget). This can easily be done using one of the Alfresco Web Services (REST, SOAP, CMIS, etc).
For instance, you need an upload “wizard”, to put document in Alfresco, directly from the Jive web interface.
Move document (from ESN to ECM system):
The purpose of this feature is to move the document binary from the ESN system to the ECM system, once it has been finalized.
This “Move To” feature has not been implemented for the moment, in the v1.0 of the Widget. Actually, it was quite complex to manage (as Jive is not open-source), and you need to have full control on the ESN code and data model to implement it. Also, there are several options to do it (duplicate file binary, keep meta-data in ESN after the move operation, remove meta-data from ESN, etc). We had limited time to deliver v1.0, and wanted to keep the system as much simple as possible, mostly to avoid any painful upgrade due to big system customization…Anyway, this feature will likely be scheduled for v2.0.
Note: if you want an example of such “Move To” feature, you can have a look at the existing IBM Quickr and Alfresco integration (more info). The scenarios described above have already been implemented by IBM/Alfresco (duplicate, detached, etc).
And the last scenario is “collaborate around document” (see section below).
Jive social content management features:
In our scenario, collaboration around the document is managed in the ESN system (tagging, rating, comments, discussions, etc).
When the document is uploaded directly in the ESN tool, then it is quite easy to do: your ESN system usually provides mechanism to collaborate around its own objects (whether it is a document, a blog post, a wiki page, a news, etc).
But when document is stored in the ECM, you need to find a way get its reference (nodeID, URL, etc) to refer to it from the ESN system.
We had 2 main technical constraints:
- First we wanted the 2 systems (ESN/ECM) to be loosely coupled (we use Ajax to browse the ECM tree structure),
- We wanted to be able to use the ECM doc reference (Alfresco nodeID) in all kind of Jive object (Jive Documents, Blog, Wiki, Discussion, etc).
So it has been decided to simply implement a “Copy link to clipboard” feature, on each document:
The use case for the “Copy link to clipboard” is as follows:
- The Jive user browses the Widget folder tree view, and copy the link of the target Alfresco document,
- Then he/she creates a new Jive Object (Jive Documents, Blog, Wiki, Discussion, etc), and paste the link in the corresponding Jive HTML rich text editor, using the standard Jive insert link wizard.
Yes it’s basic, but it works well …and also it is very easy to maintain (no Jive code or data model customization here), so no regression expected during the Jive software upgrade. For the next version of the Widget, we might consider using the new Jive activity stream feature…to provide a more integrated experience…to be studied.
This Widget component is a first example of how the Alfresco/ECM foundation could be integrated with ESN/Jive system.
It’s a first step, we know we can do much more with social software integration.
So what are the next steps ?
This v1.0 of the Widget is deployed in Jive production environment at customer site, and used by thousands of users. We are waiting for customer feedback to gather evolutions request, and improve next releases. We are planning to build a GA Enterprise version as soon as possible, for other customers.
Before this Enterprise release is ready, if you want to test it, feel free to contact us: email@example.com