REQUEST A DEMO

Blog

Would Clarify Bootcamps be useful?

February 22, 2010 One of the themes I’ve picked up on recently is that there seems to be a lot of organizations who still use Clarify /Amdocs, but not to its full potential. No where near its full potential. I’ve recently talked to a bunch of people who don’t really know how to use it fully, extend it, what functionality is available, or even how to maintain it. I’ve seen the same issue on both sides of the house: Technical IT resources who don’t know how to customize it, what all of the moving components are, what to do when something goes wrong, or even where to look for knowledge, Business resources who don’t fully know what the product is capable or what exactly they even have. For example, I’m amazed when I find out that people aren’t running Rulemanager – one of…

Messaging as an Enterprise Integration Pattern

February 19, 2010 With our recent release of Dovetail Carrier, we’ve been having more conversations around messaging as an enterprise integration pattern. (For more on Carrier, be sure to check out some of Kevin Miller’s recent posts on the subject.) In my feed reader this morning, I saw a new post from Gregor (a software architect from Google) where he discusses some of his thoughts about the right places for use of messaging. Good stuff. The list of advantages for messaging as a transport mechanism cuts to the heart of why we like messaging. For even more, be sure to check out Gregor’s site: Patterns and Best Practices for Enterprise Integration, where there’s plenty more details on messaging.

WebHooks in Clarify/Dovetail

February 9, 2010 What is a WebHook? From the WebHooks wiki: The concept of a WebHook is simple. A WebHook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. A web application implementing WebHooks will POST a message to a URL when certain things happen. When a web application enables users to register their own URLs, the users can then extend, customize, and integrate that application with their own custom extensions or even with other applications around the web. For the user, WebHooks are a way to receive valuable information when it happens, rather than continually polling for that data and receiving nothing valuable most of the time. WebHooks have enormous potential and are limited only by your imagination! (No, it can't wash the dishes. Yet.) That sounds like a business rule (in Clarify…

Running mklink in NAnt

February 5, 2010 Since there is not an executable for mklink, it took me a minute to figure a good solution to running mklink as a target in my build script.   The NAnt has an exec task that is used for running command line targets, but it requires an executable as its target. The command shell works in this situation, so I just need to exec the command shell, and have it execute mklink as its target.   Here is my NAnt target:   <exec program="cmd" commandline="/c mklink /d mobile\source\CustomControllers customizations\Controllers"/>  

Carrier – Customizing Your Response Emails

February 3, 2010   Out of the box Dovetail Carrier is very good at receiving emails and allowing you create business functionality which can react to incoming messages. There is a flip side to receiving emails. Sending them. This post will explain how the Email Agent extension uses templates to send email notifications. First we need to explore what information your template will have available to it. We’ll start by setting the stage.   Real World Scenario   In the Email Agent extension. When an email is received by your company’s support account the New Case Support Email rule set is invoked. This rule set determines that the email is a request for support and a new case is created. The next rule action should send a response email. What should the email tell the user?   It should inform them of details…

Transitioning Beyond 255 Transitions

January 29, 2010 In Clarify, Logistics and Quality both use transitions to determine how a request moves from one condition to another. To change a condition, a transition must be defined between the two conditions for that part request type. To restrict access to critical part operations, you can administer permissions according to privilege classes. In complex installations, the number of transitions across both business areas can easily reach the imposed limit of 256 transitions. This limitation can truly impose headaches when the transitions cannot be accurately configured to match the business process. Dovetail Admin can also be used to configure the transitions, and now it does not enforce the same limitation. It does use the same mechanism for storage, so a little bit of work needs to be done to allow more transitions to be set up, and using Dovetail Agent (or…

Dovetail is hiring a .NET Developer

We're expanding the development team on our line of existing products. You'll be working on a small team that develops applications for large businesses using some of the latest technology. You will be involved in all aspects of solution development, including analysis, design, development, testing, documentation, and support. We’re looking for a software developer with demonstrable C# (preferably .NET 2.0 or later) and HTML/CSS experience (ASP.NET MVC is a plus). Any experience with test-driven development or automated unit testing in general is a huge plus. Also, participation in the community (attendance of events, avid blog reader + commenter, or maybe you even have a blog yourself) will put you firmly in the running for this position. We’re looking for people that believe learning and continuous improvement are primary responsibilities of a software developer. We’re hiring motivated people for a terrific…

More On Dovetail Carrier RuleSets

January 28, 2010 I wanted to discuss RuleSets in more detail this time diving deeper into a couple of topics I pulled out of Creating Your First Carrier Extension because they were too advanced for an introduction.RuleSets Have ContextYour conditions and actions need a way to inspect the message they are evaluating. This is accomplished via the RuleContext object with is give to each condition and action being invoked by the RuleSet. Everytime Carrier starts executing your RuleSet it creates a new RuleSetContext object and puts the message being processed into the context.Here is the rule context interface. public interface IRuleContextMESSAGE { MESSAGE Message { get; set; } T FindT() where T : class; bool HasT() where T : class; T PushT(T entity) where T : class; }It is also useful to have a way to communicate state between conditions and actions. This…

Creating Your First Carrier Extension

Extensions are the heart of Dovetail Carrier. The application itself does nothing unless there is an extension present. This makes it important to understand how to create your own extensions. This guide will take you through creating a brand new extension and having it subscribe to one of the core Carrier messages IncomingEmailMessage.   Create The Extension Project   The first thing we are going to do is add a project to the extensions solution included with Carrier. Before you can do this you’ll need to unzip the\developer\extensions-source.zip file shipped with Dovetail Carrier into a directory on a development machine which has Visual Studio 2008 installed.   Next open the extension solution (carrier-extensions.sln) and add a new project to the solution.   File -> Add -> New Project Select a C# Class Library and give it a name. I'll use MyFirstExtension Add…

Using jQuery to check all CheckBoxes in an iframe

January 21, 2010 In Dovetail Admin, there are a few pages where there is an option to check or uncheck a list of checkbox controls that are in an iframe. The Select All and Unselect All buttons perform the action, and using jQuery the codes becomes really simple and efficient.   The code that the buttons use is shared, and the true/false value is passed in to the function to check or uncheck the boxes.   The old code gets the iframe, gets all of the input fields, and then loops through all of the input fields. As it loops, if the field type is a checkbox, then the field’s checked attribute is set to the true/false value that was passed in.               Here is the original function:   function SetAllCheckBoxes(bOnOff) { var the_iframe= document.getElementById('priv_classes'); var doc = the_iframe.contentWindow.document; all_fields = doc.getElementsByTagName("input"); var element_count = all_fields.length; for(i = 0;i <…