Docudraft Troubleshooting Tip

In the Docudraft development world, it makes a lot of sense to modularize your templates.  By modularize, I mean: to break out distinct sections (like headers, fee details, timekeeper summaries, disbursement details, etc) into separate documents that get called by a central template.  The benefit of this, of course, is that you can easily re-use these sections and create conditional logic inside the principal template to call the sub-templates accordingly. 

For example, if your principal bill format is called PRINCIPAL.RTF, when you open it in Word, a section of it might look something like this:

Depending on how many sub-documents are called, how far the conditional logic is extended, and how many different developers have had their fingers in the pot - this can very quickly become a tangled morass for anyone tasked with troubleshooting “the format”.

Often when Docudraft error messages appear, a specific reference to a problem variable might be included in the error message.  One of the additional challenges support personnel are faced with, is that the Windows Explorer search function isn’t always able to deliver on its promise of being able to pick out specific text (like a problem variable) in documents to help you locate where in the labyrinth of sub-templates the problem might be occurring… so enter the cmd prompt FINDSTR.

From a cmd prompt, you can use FINDSTR to locate files that contain text – and unlike Windows Search - successfully.  So, from your Run command enter the following:

and once the cmd window opens you can enter the FINDSTR text.  In this case, let’s say your Docudraft process errored on a variable called {xx_my_custom_var}.  To search for this in all of the templates in your bill formats folder, you might enter your FINDSTR text as such:


So, to break down the above into the main components:

  • FINDSTR – this is the principal instruction
  • Following FINDSTR are some additional, optional instructions.  Here is a brief description of each:

/m is an instruction to print only the file name if a hit exists

/i is an instruction that the search should not be case sensitive (the benefit here is that because Docudraft is not case sensitive, the text string will be found no matter how it has been entered)

/s is an instruction to search all sub directories 

  • “xx_my_custom_var” is the string of text you are searching for.  Note – don’t include the curly braces.  This is important as often variables are used in equations or other logical statements where the curly braces are not apart of the string of text.
  • “c:\*rtf” is the location that you want the FINDSTR to search and the types of files to include.  In my case I searched the entire C:\ drive (and it’s sub directories).  For most Aderant users, however, this will most likely just be the location of your DDTMPLT folder defined in the DDRAFT paths.  It is important to note that I also only searched for files of type .RTF (as this isolates only my bill template files).

  So after hitting ENTER inside the cmd prompt, you will receive a list of the all of the files (and their full directory paths) that satisfy the search conditions:

So hopefully that will help you to (more expeditiously) isolate where the problem might exist.

To see a full list of the FINDSTR search options, check out:

Posted in Docudraft, Uncategorized | Leave a comment

Include Matter Financials at point of Time Entry

I recently saw a demo of Aderant’s new matter planning and forecasting application, and this appears to be a serious step forward for firms looking to integrate true management into the “living matter” (as well as the preparation for it).   While this new application seems incredibly robust, some firms may be asking themselves, “how/where should this tool fit into our existing processes?”, “who should be driving it?”, or, maybe even,  “does this represent too big a project for us at this point?”.

Managing matter financials has always been a critical responsibility, but the discussion of it has never seemed more timely.  What I want to show in this post is how a few small customizations to the Aderant Matter Maintenance and Enhanced Time Entry application can get the firm’s user base (at least) thinking more about matter management, and (ultimately) improve the quality and profitability of its engagements.

Ok, so, a caveat: this post is most relavent to firms using the Aderant Time Entry tools (and probably where fee earners are actually doing the time entry).  While I’m sure the same data could be fed back and presented in almost any time entry system, this post will refer to using the Aderant tool set to achieve this.

While it is not essential to include, (as you can see below) my first step is going to be to add a custom field to track matter fee estimates.  Even without a sophisticated forecasting or modelling tool, at the point of matter inception a fee earner likely has some idea of what they are going to bill a client over the course of the engagement – and if it needs to be adjusted, there is no reason why it couldn’t be at a later date.  So the first task is to create a placeholder for this by creating a custom field in TBM or HBM_MATTER.  Once created through DBEDITOR drag this onto one of the Matter Management forms (like TBMMATT3).

Now that we’re collecting matter fee estimates, the question is, “how should users most effectively interact with this data?”.  Sure, reports and alerts can be written to help matter management, but why not expose this (and other) key matter data at the point of time entry?  By placing it here, users are constantly reminded of how the matter is tracking.  Consider this time entry form:

So not only do we include the new Fee Estimate, but we can show the current WIP balance, Fees billed to Date, and the % of the Estimate utilized to date.  And why stop there?  Why not show the users any outstanding AR and Trust balances?  This gives the user a matter summary at probably one of the few places they actually touch the PMS.

Posted in Aderant Expert | Leave a comment

Add data-driven highlights to SSRS reports

One of the many reasons law firms are now using Reporting Services as their primary reporting platform is the ease with which you can format reports to add significant value.  In the below example, we have a very useful report that helps to manage Aged WIP by department and responsible employee:

Let’s say that “Firm X” has developed the above report in order to help manage the on-going issue of billing WIP in a timely fashion.  As we all know (for most law practices) the expeditiousness with which WIP is billed directly correlates to its collection realization.  As a result, Firm X typically runs this report in order to try to identify where certain thresholds are being broached. 

For the purposes of this demonstration, let’s say that the categories of interest for Firm X are where any responsible employee has either of their “150 Days” or “1 year” buckets with greater than $15K in unbilled time.  Rather than having to review line by line (what would normally be) a very long report searching for offenders, we can incorporate this business rule directly into the report by making a simple change to the formatting of the responsible employee group row on the report.    

So, firstly, highlight the group row, and on the Properties Tab, under Appearance, click the dropdown arrow next to BackgroundColor and select Expression:

Select BackgroundColor Expression     

Once in the Expression, type the following:


This simple “if” statement instructs the row to change color should our business rules be offended (the severity of pink indicating just how offensive the user’s unbilled time is). 

Now when we preview the report, we can very quickly identify which of our responsible employees needs to be followed up with:

With the addition of a single expression change,  I think you would agree that the report is now a much more valuable management asset. 

If you would like any other details, please post a comment below or email me at

Posted in Aderant Expert, Reporting Services | Leave a comment

Address Formatting: from Docudraft to Basicscript to Reporting Services

A law firm using Aderant Expert asks, “Can we produce a document that looks like our bills through Reporting Services?”.  One of the reasons why some may not answer this question with a resounding “absolutely!” relates to how address data is stored in the practice management system (PMS) and how this poses a challenge to presentation and formatting.  All firms using Aderant Expert should be familiar with Docudraft (DDRAFT) code that allows them to handle permutations in the data, and while some firms may have even written Basicscript code to emulate this logic in Report Writer or End User Painter, firms may only now be looking at Reporting Services to see if the same logic can be applied.  The purpose of this post is to demonstrate how in Reporting Services you might accomplish it. 

In Aderant Expert, all address data is stored in a table called HBM_ADDRESS.  Some examples of the columns in this table are: ADDRESS1, ADDRESS2, ADDRESS3, ADDRESS4, CITY, COUNTRY_CODE, POST_CODE.  Depending on the age and origination of the data (i.e. was it converted from a previous system that only stored addresses in text fields?), and the business rules now enforced at the point of data entry, some database rows may only contain data in the ADDRESS text fields (1, 2, 3, 4), while others have been populated with data in the appropriate placeholder fields (i.e. “Toronto” is populated in the CITY field, instead of ADDRESS3), and some are no doubt a combination of both.  Herein lies the challenge: how can I present non-standard data in a standard format?

In DDRAFT, address data might contain logic that resembles something like this:

{If not empty(p_address1)}{p_address1 + “[Hrt]“}{END IF}{IF not empty(p_address2)}{p_address2 + “[Hrt]“}{END IF}

This code instructs the format to only return data if the field in question has a value.  If it does, then it will return that value and enter a hard return in order to maintain the format.  When a null or a blank is encountered, the entry is skipped, and the next field is evaluated in the same way.

In Basicscript, the same logic might look something like this (where address1$ and address2$ have already been populated with the db values):

In both examples, you would be returning the fully formatted result to a single field or table cell.  In Reporting Services, it is my recommendation that the same approach be taken.  So, once you have completed your data set, drag and drop a text field or table onto your report layout.  Right click on the field to contain the address data and select “Expression”.  Once in “Edit Expression”, you would need to enter the following (where address1 and address2 are fields in your data set):

Obviously this example is fairly simplistic, but hopefully you can see how you might extrapolate this logic to meet your more complex formatting requirements.

Posted in Aderant Expert, Docudraft, Reporting Services | Leave a comment


 This is the new website for Kelburn Consulting.  We are currently under construction and expect to have our content up very soon!

Posted in Uncategorized | Leave a comment