There was a recent discussion in the Clarify CRM Professionals group in LinkedIn regarding the GeekInterview Clarify CRM Interview questions. (and no, I didn't have anything to do with these questions)
Take a look - what do you think?
Are these good questions? Are the answers accurate?
Are they the kind of questions you would ask if you were at Amdocs and hiring an employee?
Are they the kind of questions you would ask if you were hiring an Amdocs/Clarify consultant to work on your project?
What questions would you ask?
I posted my comments in the Clarify CRM Professionals group in LinkedIn - but my short answer is I think these questions are terrible.
What say you, dear readers?
Our next Dovetail Developer Workshop is scheduled for August 10 through August 14 here in Austin, TX for developers interested in learning how to configure, manage and customize a Dovetail CRM environment. Space is limited, so please register ASAP by simply sending Nathan Shilling an email, or calling (512) 610-5455.
The workshop will kick off with a review of the Dovetail CRM components and the base-line architecture. Later sessions will walk participants through the installation of each of the Dovetail CRM modules, with hands-on programming labs where students will acquire skills and develop expertise to build new functionality, which they then can utilize to extend and customize their own CRM environment.
For instance, you will:
- Learn how to extend your schema using SchemaEditor;
- Import data using ArchiveManager;
- Perform data access operations using the Dovetail SDK;
- Learn how to use Dovetail Seeker for robust searching;
- Write code that uses the API toolkits; and
- Extend and customize Dovetail Agent – customize existing web pages, and create entirely new ones.
Bring your laptop. You'll need it for the many programming labs where you'll learn to add significant new functionality to your existing Clarify system.
For a complete syllabus, click here.
I've heard some rumblings of late about software companies claiming that they have bug-free software, while behind the scenes they are simply closing bugs that have been opened without actually fixing them.
Well, this is certainly a much easier way to create bug-free software that actually having disciplined engineering practices.
We can do this pretty easy by simply creating a business rule that calls a script.
The business rule
Object Type: Change Request
Rule Name: Bug Free
Rule Set: Best Practices
Start Event: Create
Conditions: None
Action Title: Go bug free
Message Type: Command Line
Start Action: 0 minutes
From: Event Creation
Using: Elapsed Time
Command Line: C:\WINDOWS\system32\WINDOW~1\v1.0\powershell.exe C:\work\PowerShellScripts\GoBugFree.ps1 "[Object ID]"
The Script
GoBugFree.ps1:
$IdNumber = [string] $args[0];
$ClarifyApplication = [Fchoice.Foundation.Clarify.ClarifyApplication]
$ClarifySession = $ClarifyApplication::Instance.CreateSession()
$qualityToolkit= new-object FChoice.Toolkits.Clarify.Quality.QualityToolkit( $ClarifySession )
$bugSetup = new-object FChoice.Toolkits.Clarify.Quality.CloseCRSetup($IdNumber)
$bugSetup.Status = "Will Not Fix"
$bugSetup = $qualityToolkit.CloseCR($bugSetup);
$ClarifySession.CloseSession();
There you go - bug-free software! Wow - that was easy!
And yes, before anyone gets their panties in a bunch- this is a joke.
Dovetail Mobile has quickly become one of my favorite products. Although it was originally designed for use on Mobile devices, it seems that I'm constantly coming up with new ways to use it.
On a Mobile Device
In its original intended state: on a mobile device.
On the Desktop
As I've shown before, a little bit of styling makes it pleasant to use on the desktop.
Within a Google Gadget
From a previous post: Clarify / Amdocs / Dovetail access from a Google Gadget
Within Outlook
You can easily add a folder in outlook that points to a URL. That makes it easy to incorporate Dovetail Mobile within Outlook.

This is easy to setup. Create a folder in Outlook, right-click on the folder, choose Properties. Check the box that says "Show home page by default", and set the Address to the URL for the Dovetail application. Like so:
That's it. Now when you click on the folder, you'll be taken to the Dovetail application - all within Outlook.
As an archived case viewer
It's common that old data (such as cases) are archived out of the production database and imported into an archive database. You can use Dovetail Mobile as a simple, web-based, read-only archived case viewer.
As an archived case viewer within the Clarify Classic Client
Like above, only this time we've incorporated it into a form (using a Browser control) within the Clarify Classic Client.
Normal Clarify operations work against the production database, and Archived Case Viewer (Dovetail Mobile) accesses your archive database.
More ideas?
What do you think? Have more ideas where Dovetail Mobile would be useful? I'd love to hear your ideas, so leave a comment!
I typically have a checklist of things that I go through before I give a demo or presentation.
I know Scott Hanselman does as well: Have a Pre-Talk Checklist and Demo Reset
The following is a set of checklist items and tips that I use before doing a demo.
Demo Prep
Close all apps that won't be used. I know this sounds like a duh!, but I've seen no shortage of Outlook toast popups, and Instant Message popups during someone's presentations and demos.
Setup a one-click restore of my database. I have a simple BAT file for SQL Server that looks like:
sqlcmd -Usa -Psa -Q "restore database dovetail from disk = 'C:\db_backups\dovetail.bak' with replace"
Start the apps that you'll be using - especially the slow ones. I know Visual Studio takes 4 minutes to startup on my laptop. 4 minutes seems like an eternity when I'm doing a presentation. So I'll typically have this running if I'll be using it.
If I need to use a command prompt - have the command prompt open already. Make sure you've changed to the directory that you want to be in.
Adjust your font sizes! That includes in your editors (Visual Studio, Ultraedit,etc.) and in your DOS and PowerShell prompts.
If I'm showing a web application:
Reset IIS: iisreset.exe. Now I know my web apps are in a clean state. And the apps I'm not using will be unloaded.
Hit the web app with your browser. This starts the app itself, loads the .NET Framework, etc. No reason for my participants to have to sit waiting for the web app to load for the first time.
Start the browser before the presentation (no need to waste the audience's time waiting for Firefox to check for updates to your plugins)
If you need to have multiple tabs available, open the multiple tabs
I often create a simple start page, that only has links to what I'll be showing:
I'll set my default home page to be this new page. Participants don't care to see your Yahoo homepage.
Turn off the browser toolbars (Links, Bookmarks, Google, Delicious, etc.)
I may even turn off the navigation bar, depending on the situation.
Turn off the status bar.
You can also run your browser in Full Screen mode, which accomplishes a similar look.
Compare the differences:
Why would you not want to maximize the screen real estate given to your application?
Speaking of screen real estate, I'll also use the whole screen for the browser. You can also auto-hide the taskbar.
Why show all the files, shortcuts and other crap that are on your desktop? Why not put your product front & center so that it gets full attention?
Compare the differences:
Tools
Occasionally, I want to be able to zoom in on a particular piece of code or a part of the UI. To do this, I use ZoomIt.
ZoomIt allows me to zoom in on a portion of the screen, and I can also draw and type on the fly, such as:
As I tend to forget keyboard shortcuts that I don't use often, I also keep a note card by my side of the ZoomIt commands and keyboard shortcuts.
I also use SlickRun. I have most of my common tools and apps defined as SlickRun magic words. I find it super useful in day to day work, but also for quick launching of things within a demo. Much cooler looking and less distracting that seeing someone do Start - All Programs - and seeing a whole screen full of menu items. Yuck.
I know Sam uses Launchy instead of SlickRun. Equally effective.
Browser PlugIns
As I'm showing our application, I often log notes to a case, send emails, etc. As I'm not the world's fastest typist (and no one cares to waste time seeing me type), I use a Firefox plugin called Clippings. With it, I can save clippings (or snippets) of text, and then easily paste them later. For example, I have clippings for paragraphs of lorem ipsum text, email addresses, as well as a couple of technical articles.
I also use Stylish and GreaseMonkey plugins. I've blogged about use of these in the past. These allow me to do some minor customizations and styling to a web app without necessarily having to modify the app itself. For example, I may use a customer's logo or colors within a web app so that they can better envision it in their environment.
Script
I have to have a script to follow. I often create a custom script for each demo, but I always have one. It allows me to make sure I'm covering the important items without missing anything. Because I create a script, it allows me to rehearse many times before the demo. This is where having a restore database script comes in handy. I'll go through the script, make some tweaks, restore my database, and do it again. Rinse. Repeat. Until I'm comfortable.
My scripts not only have the steps I follow, but I list important things to point out, notice, and talk to.
For example, here's a portion of the script I use when demonstrating SchemaEditor:
<snip>
we'll use SchemaEditor to add 2 new fields to our schema
- Show Intellisense
- type <add
- notice how it shows me available commands
- choose addTable
- notice how it shows me the id and name fields
- give it an id of "my_table_id"
- notice the blue squiggly line; mouse over it; notice the validation message
- The point: schema validation BEFORE even hitting the schemaeditor app.
- se -p (schemaeditor.exe -preview)
view output (who; what; when)
- se -a (schemaeditor.exe -apply)
view output (who; what; when)
show contact table in BOLT
- There are now 2 new fields: x_contact_method, x_ssn
- Notice that they were automatically marked as USER DEFINED
(this is the default, I didn't have to specify this)
- There are also 2 new view columns on rol_contct
</snip>
In summary
And there you go - a little peek under the covers of my demo prep. I know there's nothing earth shattering here, but perhaps it'll help you remember some of the small items that add a lot of polish to your demos and presentations. I know it helps me.
Rock on.
I've been having an ongoing conversations over the last few months with Kevin Leahy around applying gaming mechanics on top of enterprise systems. I'm still trying to get my head around a lot of this, so I'm using this post to jot down some of my ideas, some of the background, and to use it to hopefully continue the conversation with others. It's far different than most of my how-to posts. Mostly, its a brain dump.
Can we use gaming mechanics to influence the behavior of users of our system?
Would this improve our service? Can we make work more fun? Would this lead to happier employees, thus leading to happier customers?
What is a Game?
what is a game? “a rule-based activity involving challenge to reach a goal" (from http://www.changemakers.net/node/1308)
a more informal definition: a structured experience with rules and goals that's fun
What are Game Mechanics?
Most of the following info on Game Mechanics comes from a presentation called Putting the Fun in Functional by Amy Jo Kim. She's the CEO of ShuffleBrain, and is [according to her bio] an internationally recognized expert in online social architecture. Go watch that presentation - it's good stuff, and it lays the groundwork.
Game Mechanics are the systems & features that make games fun, compelling and addictive.
- Collecting
- Impressive collection == bragging rights
- Points
- game points are given by the system
- social points are given by other players
- redeemable points drive loyalty
- leader boards drive player behavior, and express community values
- Levels
- punctuate the game experience
- unlock new powers and access
- Feedback
- accelerates mastery and adds fun
- social feedback drives engagement
- Exchanges
- are structured social interactions
- basic, primal form of social engagement
- can be explicit or implicit
- add friend is explicit
- comments are implicit
- Customization
- character customization
- interface/environment
- quick games and games within games
- spectators
How do we use game mechanics to illicit the desired behaviors from users of a Customer Service & Support system?
How do we use game mechanics to illicit the desired behaviors from users (agents, customers) of a Customer Service & Support system?
Example:
Lets take a concrete example. Many Customer Service systems use some sort of knowledgebase, or knowledge management system. My experience has shown that often, these knowledge systems aren't as effective as they can be, because folks are not contributing to these systems, keeping them up to date, or even searching and re-using the existing knowledge within them. Less re-use and sharing means we're working and solving the same issues over and over again. And it means we're not setting up our knowledge systems for maximum value in self-service scenarios.
How can we get encourage the desired behavior? Specifically, how can we encourage folks to create, use, and re-use knowledge within the system?
A few bullet point ideas under the different game mechanics categories:
Collecting:
- KnowledgeBase (KB) articles Created
- Cases Solved
- Cases solved and linked to a KB article
- # of likes (thumbs up) on your KB articles
Points:
- creating a KB article
- having a KB article approved
- using a KB article to solve a case (linking)
- when someone uses one of your articles to solve a case
- improving a KB article
- when a customer uses an article to solve a problem (eliminating the creation of a case)
Feedback:
- comments on solutions from agents
- comments on solutions from customers
- thumbs up / thumbs down
- mark as favorite
- notifications about when activities occur, including those that generate points
- trending topics, searches, solutions used
- points leaderboard
- dashboards
Levels:
(this could use improvement. other ideas?)
- KB novice - can create, comment, use KB articles. can submit for review
- KB reviewer - can review articles, submit for public (external) consumption
- KB expert - can mark for public consumption
Other aspects of game mechanics that could be used within the system:
Exchanges
(social interactions)
- chat, collaborate within a case
- comments
- thumbs up/down
- tagging
Customization
- avatars for customers, and for agents
- show avatar alongside names
- themes
- for agents, for customers
- custom themes (colors)
- layouts (i.e. what shows on home page)
quick games and games within games
spectators
- managers, executives, others in the company, customers
- RSS feeds
- notifications
As I said, much of this post is a brain dump, and a way to start getting ideas down to paper bits.
I would love to hear from you on this topic. What do you think? Is this interesting? Or am I full of crap? To be honest, I'm not sure myself.
I was playing with Google Gadgets a bit lately, and wanted to see what I could do with creating a gadget for Clarify / Amdocs / Dovetail.
Gadgets are simple HTML and JavaScript applications that can be embedded in webpages and other apps.
Google has good details on gadgets - how to use them, how to create them, etc.
Here's what I came up with:
What can we do with this gadget?
Review my open cases:
Review recent activity for your workgroup (in this case, the user belongs to the Administration workgroup):
Work a case, including workflow (assign, dispatch, etc.) log phone notes, send email, review the case history, change status, close the case, etc. :
Search the knowledgebase (solutions), cases, or both:
access the knowledgebase (solutions):
There's a few other things you can do as well, but you get the point.
How is this done?
In all honesty, it's actually quite simple. I've simply put the Dovetail Mobile Agent application inside of a gadget container.
I created the following XML which defines the gadget:
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Dovetail" height="400">
<Require feature="opensocial-0.8"/>
<Require feature="dynamic-height" />
</ModulePrefs>
<Content type="html">
<![CDATA[
<style>
#wrapper{
width:100%;
height:400px;
padding:0;
margin:0;
border:0;
}
</style>
<iframe id="wrapper" src="http://www.mycompany.com/DovetailMobile"></iframe>
]]>
</Content>
</Module>
That's it. Notice that it's really nothing more than an iframe element with its source set to the URL for Dovetail Mobile.
Copy this XML file somewhere on your website so that its publicly accessible, such as http://mycompany.com/dovetail.xml
To add the gadget to your Google home page
From your iGoogle page, click on the Add Stuff link, then, on the left side of the page, you'll see a link that says Add feed or gadget

Simply type in the URL to the XML file you created earlier, and click the Add button.
Finally, click on the Back to iGoogle home link, and your Dovetail gadget should be there. Sign in to Dovetail, and you're good to go.
Hope you find this useful.
Rock on.
Notifications and escalations generated by Rulemanager are an integral component of the Clarify/Dovetail system. Traditionally, email and in-application notifications are the most common notification delivery mechanisms. Digital pagers were popular years ago, but are pretty much non-existent today.
With mobile devices (iPhones, Windows Mobile, BlackBerrys, etc.) becoming almost ubiquitous, we can look to using these devices for notification delivery. And they all share a common communication platform - SMS. SMS (Short Message Service) is commonly referred to as text messaging.
So let's look at how we can use SMS as a delivery mechanism.
A while back, I detailed how to use Twitter as a notification channel, and then use Twitter to send SMS messages.
If we don't want to be coupled to a service like Twitter (which doesn't have guaranteed delivery, SLAs, etc.), we can use a very similar process, but instead of Twitter, we'll communicate directly with a commercial Mobile messaging provider. In this case, we'll use Clickatell.
Clickatell
Clickatell provides an SMS gateway. It is a paid service, but you can signup for free, and you get 10 free credits to test things out.
Clickatell provides multiple scripts and APIs for connecting to their gateway, including:
- HTTP/S
- FTP
- SMTP
- C#
- PHP
- SOAP
- ...
For this example, we'll use HTTP.
Script to send an SMS message
First, we'll create a simple script for sending a text message. I used JavaScript.
I named the script send-sms.js:
var arguments = WScript.Arguments;
var smsNumber = arguments(0);
var message = arguments(1);
var sUrl = "http://api.clickatell.com/http/sendmsg";
var sAPI_ID = "xxxx";
var sPassword = "xxxx";
var sUsername = "xxxx";
var sPostData = "api_id=" + sAPI_ID;
sPostData+= "&user=" + sUsername;
sPostData+= "&password=" + sPassword;
sPostData+= "&to=" + smsNumber;
sPostData+= "&text=" + message;
var oXMLHTTP = WScript.CreateObject("Microsoft.XMLHTTP");
oXMLHTTP.open("POST", sUrl, false);
oXMLHTTP.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
oXMLHTTP.Send(sPostData);
var sResult = oXMLHTTP.responseText;
WScript.Echo(sResult);
The script takes 2 arguments: the SMS number to send to, and the message to be sent.
Notice the3 variables: s_API_ID, sPassword, sUsername. When you sign up with Clickatell, you'll get your own unique API ID, username, and password. Simply replace the "xxxx" placeholders with your credentials.
From the command line, we call it like so:
cscript send-sms.js 15121234567 "hello, world"
As expected, the message is delivered to my mobile device - within a few seconds. Nice.
A Replacement Paging Application
Now that we have a script to send SMS messages, we need a replacement paging application for Rulemanager.
We'll use a simple BAT file, named notifySMS.bat, that simply calls the send-sms script, with the appropriate parameters:
@echo off
REM How RuleManager calls this script:
REM pagerApplication -p <pager_type> -t <employees pager number> -m <message to be sent> -e <employees email address>
REM
REM How we need to call the send-sms.js script:
REM cscript send-sms.js smsNumber message
REM
cscript send-sms.js %4 %6
Then, we tell Rulemanager to use our new BAT file as the paging application:
<!--The full path to the pager application executable to use for the pager notification -->
<add key="NotificationConfig.PagerApplicationPath" value="notifySMS.bat" />
Preferences
We'll use the Clarify out of the box Text Pager notification preference. For this example, for the user annie, I simply set her preferences to always notify by Text Pager.
We also want to be sure that the pager number for annie is set:
Create a rule for testing
Object Type: Case
Rule Name/Description: Test rule - notify annie when a note is logged to a case
Start Events: Log Note
Cancel Events: None
Conditions: None
Action Title: Notify
Who to Notify: annie
Start Action: 0 minutes
From: Event Creation
Using: Elapsed Time
Repeat : Never
Message:
RE: Notification for [Object Type] [Object ID]
A note was logged to [Object Type] [Object ID]
[Object Type] Title: [Title]
Severity: [Severity]
Notifications!
Start the Dovetail RuleManager service, log a note to a case, and check the mobile device for a notification:
Success.
I can also look at the Rulemanager log file and see exactly what happened:
RuleManager.Employee - Notification preference for User login "annie" and severity "High" determined to be "TextPagerNotification".
RuleManager.EmployeePreferenceNotificationDealer - Notification type "TextPagerNotification" being created.
RuleManager.TextPagerNotification - User login "annie" was added to the Pager Notification (TextPagerNotification).
RuleManager.Notifier - Recipient User login "annie" was added to Notification type "TextPagerNotification".
RuleManager.ProcessExecutor - Command to be executed: ""notifySMS.bat" -p SKY_WORD -t "15121234567" -m " A note was logged to Case 74
Case Title: problem with a slurpee machine
Severity: Medium" -e "annie@moorea.localhost.com""
Clarify Rulemanager (Windows)
The same process and scripts work with the Clarify/Amdocs Rulemanager.
Simply set the custom paging application path to the notifySMS.bat file that we created earlier.
Start the Clarify Rulemanager service, log a note to a case, and the message is delivered to my mobile device - as expected.
I can also look at the Clarify Rulemanager log file and see exactly what happened:
Executing SHELL 'C:\clarify\eFrontOffice11.5.0\ClarifyCRMServer\Rulemgr\notifySMS.bat -p SKY_WORD -t "15121234567" -m "RE: Notification for Case 93 A note was logged to Case 93 Case Title: problem with my vpn connection Severity: High" -e "annie@moorea.localhost.com" &'
Clarify Rulemanager (UNIX)
If you're running the Clarify Rulemanager on UNIX, the process is the same, except you would probably use a different language for the send-sms script (such as Java, Perl, PhP, Ruby, etc.)
Dovetail Mobile
We can easily tie this in with Dovetail Mobile by simply including the URL to the case within the business rule message:
Message:
RE: Notification for [Object Type] [Object ID]
A note was logged to [Object Type] [Object ID]
[Object Type] Title: [Title]
Severity: [Severity]
You can view this case here: http://myCompany.com/mobile/Cases/Summary/[Object ID]
Here's the SMS notification, showing a clickable URL:
Now, as users get notifications on their mobile devices, they can click the link, log in to Dovetail Mobile, allowing the agent to view and work the case - all from their mobile device.
Sweetness.
Summary
Combining SMS notifications and alerts with Dovetail Mobile allows IT help desk and support professionals to respond regardless of physical location. The world is getting flatter everyday.
When sending an email out from a case (Log Email), Rulemanager is responsible for delivering the email. Rulemanager uses a template (com_tmplte) to determine the format and details of the actual email. These templates can be configured to specify a from address. Unfortunately, this configuration does not always work as expected when using the Clarify Rulemanager. Lets take a closer look at the template itself, as well as the differences in how Clarify Rulemanager and Dovetail Rulemanager each use this template.
The send_email_about_obj template
When sending an email out, the send_email_about_obj com_tmplte is used.
This template looks like:
TO: <FOCUS.recipient>, <FOCUS.cc_list>
FR: <FOCUS.sender>
RE: Regarding Case Number <ADDITIONAL_INFO>
<FOCUS.message>
Notice that the com_tmplte has an "FR:" token in it, presumably so that one can set the From address.
Clarify Rulemanager
When the Clarify Rulemanager sends an email, it does not interpret the FR: token as a From token - instead, it simply includes the FR: token and value in the email body.
In order for Clarify Rulemanager to send email (on Windows), it connects to a Microsoft Outlook email client, and it connects as a particular mail account user. Whenever Clarify Rulemanager sends email, it uses that mail account user as the from address. For example, if the Outlook mail account is rulemanager@mycompany.com, then all emails (including Log Emails, Commitment Escalations, and Business Rule Actions) will have a from address of rulemanager@mycompany.com.
So, putting it all together, a Log Email sent from a case by the user Annie Agent (whose login name is annie_agent) will look something like:
TO: customer@company.com, cc_customer@company.com
FROM: rulemanager@mycompany.com
SUBJECT: Regarding Case Number 12345
BODY:
FR: annie_agent
This is the actual message body typed in by the user.
Notice that the text FR: annie_agent is included in the body, and the from address is always from the rulemanager email address.We can do better.
Dovetail Rulemanager
Dovetail RuleManager has the ability to honor the FR: token in the template.
Using the same template as above, Dovetail Rulemanager will send an email that looks like this:
TO: customer@company.com, cc_customer@company.com
FROM: Annie Agent <annie_agent@mycompany.com>
SUBJECT: Regarding Case Number 12345
BODY:
This is the actual message body typed in by the user.
Notice that the FR: token is interpreted correctly. The From address of the email is the actual user who performed the Log Email, and the Body does not contain the seemingly erroneous "FR:" text. Sweetness.
Dovetail Rulemanager - alternative config
For those implementations that do want all outgoing emails to have the same From address (such as From support@mycompany.com), simply set the Dovetail Rulemanager config like this:
<add key="EmailServiceConfig.DefaultFromEmailAddress" value="MyCompany Support Department <support@mycompany.com>" />
<add key="EmailServiceConfig.UseDefaultFromEmailAddressForAllMessages" value="true" />
Now an outgoing email will look like:
TO: customer@company.com, cc_customer@company.com
FROM: MyCompany Support Department <support@mycompany.com>
SUBJECT: Regarding Case Number 12345
BODY:
This is the actual message body typed in by the user.
This scenario is common when the support address is monitored by an inbound email processing product, such as emailclerk or Dovetail EmailAgent. This allows a customer who receives the email to simply hit reply, and the reply will be sent to the support mailbox, and automatically logged to the case.
And there you have it - probably more details about obscure Clarify/Dovetail configurations than you cared to know.
Received an email today in response to our job posting for a Senior Software Tester.
Needless to say, this person won't make the cut.
We're still looking, so if you're SERIOUS about a position here, and you possess a solid ATTENTION TO DETAIL, then please email us and tell us why you'd make a great addition to our team.