Clarify / Dovetail Activity Streams
Ever since I heard about activity streams, I’ve been thinking about an activity stream out of our Clarify / Dovetail Customer Service system. I saw Chris Messina present about activity streams at SXSW 2010, and got even more jazzed.
What are activity streams?
From the activitystrea.ms wiki: ActivityStreams is a convenient and consistent way to syndicate social activities around the web.
OK, how about a little more detail, perhaps with some context?
I’m going to quote right from the Socialcast website here, as I think they do a good job of explaining this.
Inside of every company, there can be hundreds or even thousands of sources of data. Information is generated by people (through emails and social network messages) and by systems (CRM and ERP systems, and inventory tracking, for example). Where the information flows and how it is used is strictly defined by a set of business processes; employees in Sales may learn about customer order updates, and the Human Resources team may be the recipients of a benefits-related email thread. Information is locked into predefined silos inside the organization, helping pockets of employees complete their work, but failing to expose important data to other departments and stakeholders.
Information silos highlight one of the most important problems in today’s Enterprise: companies are overwhelmed by the vast quantities and sources of data generated during the normal course of business. How do companies optimize the flow of information to promote efficiency, knowledge-sharing and a connected, well-informed workforce?
The solution to the information overflow problem is Activity Streams. Activity Streams are the future of enterprise collaboration, uniting people, data, and applications in real-time in a central, accessible, virtual interface. Think of a company social network where every employee, system, and business process exchanged up-to-the-minute information about their activities and outcomes. Now, instead of pockets of knowledge, the company will have one central nervous system that unifies every piece of corporate information. Each employee can find data that he or she never knew existed, collaborating around this information and accessing it in a variety of ways (email, mobile applications, and through existing infrastructure).
Activity Streams fundamentally change how companies do business, unlocking the vast amount of information generated by everyday operations and making it instantly available across previously defined boundaries. Activity Streams humanize every business process inside a company, adding a social layer to data and opening up real-time collaboration.
When people think of activity streams, its common to think of someone’s Twitter stream, or a Facebook News feed. I like to expand that and include a feed from a system, such as your CRM system.
Imagine if your CRM system could post/tweet activities, and broadcast those to anyone who was interested. Within an enterprise, that could be many people. People in entirely different departments. Would a sales guy be interested to know when one of their customers opens a new support ticket? Would a product manager be interested to see tickets being opened regarding her product? Or RMAs? Or bugs?
But you may not want to post this to the entire world (such as through Twitter). You may only wish to post this to your organization. This is where enterprise/private microblogging services such as Yammer, Present.ly, and Socialcast come into play.
Socialcast
I came across Socialcast recently, and I really like their application. They describe it as an Enterprise Activity Stream Engine. A few things I like about Socialcast:
- They understand that systems generate worthwhile information, as well as individuals
- Different deployment options: hosted (private cloud or multi-tenant SaaS), or on-premise, behind your firewall
- Their APIs make it easy to integrate with.
- It’s easy, It’s free to get started, It’s private to my organization
- Tons of Client options: Desktop, Web, Outlook, Gmail, iPhone app, Blackberry App, …
- Super easy to import all of your other feeds and streams – from individuals, external sources, and internal systems
- Grouping and searching – making it easy to filter for the information that is relevant to you.
- Works with email: send an email in to publish, outbound email for notifications
- Works with RSS: easily import feeds in, easily subscribe to feeds that contain the info you want
So lets take a look at how we can publish an activity stream from our CRM system, and push that stream into Socialcast.
Publishing an Activity Stream out of Clarify/Dovetail
I’ve posted in the past about using WebHooks. We’ll use the same basic idea here to publish activities.
Powershell Script
First, I wrote a simple PowerShell script that posts a message to Socialcast. It simply uses the Socialcast API to publish a message.
The script is available on Clarify Toolbox at http://www.clarifytoolbox.com/code/powershell-script-publish-message-socialcast
The interesting part is where we simply make an HTTP request to publish to Socialcast:
$messageXML = message;
$messageXML+= title![CDATA[ + $title + ]]/title;
$messageXML+= body![CDATA[;
$messageXML+= $message;
$messageXML+= $tags;
$messageXML+= ]]/body;
$messageXML+= url![CDATA[ + $url + ]]/url;
$messageXML+= /message;
$webClient = new-object System.Net.WebClient
$webClient.Credentials = new-object System.Net.NetworkCredential($socialcastLoginName,$socialcastPassword )
$webClient.Headers.Add(Content-Type, application/xml);
$response = $webClient.UploadString($messagesURL,$messageXML);
Business Rules
Second, I created a couple of business rules that call this script. One is for cases, and one is for solutions.
Object Type:
Case
Rule Name/Description: Publish to Socialcast
Start Event: Create, Close, Re-open
Cancel Events:
Conditions: none
Action Title: Publish to Socialcast
Action Type: Command Line
Start Action: 0 minutes
From: Event Creation
Using: Elapsed Time
Repeat: Never
Message: C:dovetailpowershellPublishActivity.bat [Object Type] [Database ID] [Activity Objid]
Object Type: Solution
Rule Name/Description: Publish to Socialcast
Start Event: Create
Cancel Events:
Conditions: none
Action Title: Publish to Socialcast
Action Type: Command Line
Start Action: 0 minutes
From: Event Creation
Using: Elapsed Time
Repeat: Never
Message: C:dovetailpowershellPublishActivity.bat [Object Type] [Database ID] [Activity Objid]
Whenever any of these rules fire, they will post a message to Socialcast. What’s nice is that you can create business rules to fire on almost anything. A few other examples of when we might publish an activity:
- when SLA levels are approaching or passed
- when an RMA is created
- when a new product revision is created
- when a contract is created, or nearing expiration
- when a change request is created, closed, or changes status
- when a part stocking level falls below a certain threshold
Really – it’s whenever you have something that would be beneficial to others within your organization.
What this all looks like in Socialcast
Here’s what it looks like within Socialcast (obviously, here I’m using their web application):
You’ll notice from the image above that we’ve published system activities into our stream. I’ve linked each post back to the Dovetail Agent Lite web application, and also included a tag of #dovetailCRM, making it easy to search, filter, and group these.
The Business Case For Streams versus Email
Stowe Boyd has a recent post that discusses streams vs. corporate email that ties in nicely with this topic.
Summary
I’m pretty jazzed about this. Easily exposing data and activities out of our systems (even legacy ones) and allowing access to this to everyone across our organization is pretty awesome.
What do you think? Can you see value in exposing a stream of data from your CRM system to the rest of your organization?