Document Assembly API: How It Works

The XpressDox Programmers' API provides those clients who have programming capability, access to XpressDox Document Assembly functionality directly from their own applications, in order to produce more complete and powerful solutions.

What does the API do?

Using the API a developer will be able to write code which gathers data from any data base or other location, determine via program logic and/or interaction with users what templates are to be merged, and can call on the API to merge the data into one or more templates.

XpressDox API for .NET

Embed XpressDox Document Assembly into your enterprise systems.
Using this API a .NET developer will be able to write code which gathers data from any data base or other location, determine via program logic and/or interaction with users what templates are to be merged, and can call on the API to merge the data into one or more templates. The templates referred to using this XpressDox API can be sourced from the Windows file system, or from any other source such as a document management system.

Typically this API would be used to embed XpressDox document assembly capability into systems such as accounting, practice management, work-flow and any other system where there is a need for creating non-trivial documents.

If there is no need to render the merged documents on the machine on which the API will operate, then it is not necessary to have MS Word installed on that system. MS Word is needed in order to author templates (which in turn requires XpressDox to be installed as an Add In to Word), and to render the resulting merged document for printing or reading. The function of merging the template and data that XpressDox performs does not require MS Word.

XpressDox API for .NET

The XpressDox API is embedded in the .NET assemblies which are installed with the Word Add In instance of XpressDox, so no additional software is needed in order to use the API. But a sample Visual Studio solution (in C#) can be downloaded, along with formal documentation on the use of the API.

XpressDox API for COM

XpressDox API for COM

The COM API is used in much the same way as the .NET API.
The second XpressDox API is for use by non-.NET developers and it exposes an interface to XpressDox via COM. This interface is very similar to the XpressDox Engine API for .NET, the major difference being that templates are expected to reside somewhere on the Windows file system. This does not mean that they cannot actually be stored in a document management system or database, but that they will have to be moved onto the file system before the COM API will be able to access them.

Similarly to the XpressDox API for .NET, the COM API uses assemblies that are installed along with the Word Add-in instance of XpressDox. It also needs another assembly, which is downloaded and installed along with the XpressDox API in the download process referred to above. The COM API would be used in much the same circumstances as the XpressDox API for .NET.

Using either of the two XpressDox APIs, the developer is responsible for the creation of an XML data set and also the selection of the template and the storing of the merged document created from them. It is necessary to note that much of the functionality available to the XpressDox Word Add-in is NOT available to the API user. This includes the dynamic data capture interview and all the features exposed via the Configuration user interface (e.g. Standard Folders for document and data storage, Data Sources, Standard Data Items, Configuration merging, etc.). All commands which can be coded into templates which refer to these features (i.e. all the Data Capture commands in the Command Editor, as well as Data Source commands and commands in the Advanced document and file handling section of the CE) will be ignored when the template merging is handled via either of the two XpressDox Engine APIs.

XpressDox–in–Word API

Develop custom interfaces but with all the features of XpressDox Desktop.
This API grants the developer access to most of the functionality provided for the Word Add-in version of XpressDox, which is denied to the APIs as noted above. The XpressDox-In-Word API would be used specifically where there is a need to develop a custom user interface for the capture of data and/or the selection of templates, but where the developer would still like to have access to the features made available by the Word Add-in. Use of this API requires Microsoft® Office Word to be installed not only for rendering the merged documents, but for some of the other pre- and post-merging functions as well.

The XpressDox-In-Word API and documentation is installed along with the installation of the XpressDox Word Add-in. The documentation is provided in the Word document XpressDox In Word API Specification.doc which will have been installed into the My Documents\XpressDox folder the first time Word is loaded after XpressDox has been installed. The Specification document refers the developer to a Word template in the My Documents\XpressDox\Samples folder. This Word template contains some Word VBA macros which demonstrate the usage of some of the XpressDox-In-Word API functions as called from within a VBA macro.

XpressDox Word API
XpressDox API for the Web

XpressDox Web API

Two mechanisms available to access XpressDox over the Internet.
Using the hyperlink API, you would be able to upload selected templates onto the XpressDox server, into your own secure area. After that, you would add hyperlinks into you own web site which would enable a user to choose from the list of templates uploaded, and then run one or more of the templates. The interview which is then presented to them in the browser will be almost exactly the same as the desktop interview which XpressDox-in-Word presents to the Word user. After completing the interview, your web site can then contain a hyperlink which permits the user to download the merged document (if that is what you want) from the server to their local PC. In addition, the template author can specify an email address (or list of addresses) to which the merged document and the captured data set will be sent. This email address would typically be that of an internal staff member who would process the results in the appropriate way.

There is an implementation of the XpressDox Web Server which can be hosted on your company’s intranet. This would enable all users who are registered to use your intranet to run XpressDox templates via a web browser (e.g. Internet Explorer, Mozilla Firefox, Google Chrome or Safari). The look-and-feel of the XpressDox Web Server version is very much like that experienced when a user selects to “run a template” using the XpressDox Word Add-in. In other words, the user is presented with in interface which mimics the desktop XpressDox Explorer from which they select the template(s) to be run. The user is then presented with an interview, which again mimics the interview presented by the Word Add-in version, including functionality such as “Use Previous Data” or “Use Other Data”, and access to data sources, etc. Once the merged document is created, it is stored in a location on the server which is configured using the normal XpressDox configuration mechanism. The same holds for the location of the captured data set. The user can then download the merged document from the server onto their local desktop, in either Word or PDF format, depending on how this is specified by the template author.


From a TechnoLawyer Exclusive article published on June 15, 2010.



Document assembly conjures up thoughts of expensive software that often becomes shelfware once lawyers realize that they cannot figure it out without professional help. Document assembly consultant Seth Rowland has helped many firms that decided to invest in professional help. But in this TechnoFeature article, Seth reviews XpressDox, a new document assembly program that sells for $150 and promises ease of use regardless of your skill level. Who better to test this claim than Seth? Read his review to see what this expert thinks of this new expert system.


I have been working with document assembly software on a full–time basis for a long time—since 1996. During that period, I have had the opportunity to review (and program in) large number of systems that assemble documents with user-entered data or merged data sources.

The document assembly platforms I’ve used include HotDocs, GhostFill/AmicusAssembly, Dealbuilder/ContractExpress, Exari, MasterDraft, and SmartWords/Xyrite. I have used merge technology in practice management systems, including Time Matters, Amicus Attorney, AdvologixPM,, PracticeMaster and ProLaw to create merge templates. And I have worked with VBA and macro automation in Microsoft Word, Outlook, Excel, WordPerfect, MultiMate, and IBM DisplayWrite. I have reengineered and rebuilt document workflow systems originally built in Lotus Notes, PowerTXT, ThinkDocs, Visual Workform, and CAPS Author. And I have reviewed numerous client–server and Web–based document assembly engines, including Pathagoras, DL Drafting Libraries, Rapidocs/Directlaw, ActiveWords, Intelledox, ProDoc, LawOnTheWeb, and Lawgic.

Thanks to this review, I recently added O2Smart’s XpressDox Docussembly to the above list.

Criteria for Evaluation

As a lawyer and a programmer, I constantly look for the perfect balance among power, ease of use, and return on investment. It is critical that a document assembly system handle complex logic. Lawyers are complex, their needs are complex, and their documents are complex. Lawyers command high fees due to their ability to handle this complexity and reduce it to simple manageable decisions for their clients.

Raw Power. A good document assembly system must have the power to handle complexity, including nested logic, repeating data, and calculations. It must also integrate with other programs that attorneys use to enter and manage their data.

Ease of Use. At the same time, the program must be easy for the developer and easy for the end user who will be answering the questions. It must present a simple and manageable interview to the user. It must be dynamic, which means that it should ask only the relevant questions, and group them together based on subject.

Return on Investment (ROI). The software must be suitable for the task. Otherwise, you will find yourself a year or two later either rebuilding your templates in a new system or never achieving your original automation goals. In addition to the price of the software, the cost includes the hardware required to run the software, the time spent by internal and external developers building the system, and the time to train end–users to use the system. These costs must be balanced against the efficiencies gained through the use of the system.

XpressDox Price and ROI

Let’s start with price. XpressDox starts at $150 per user. In volume the price drops to $79 per user. This price is for a full version of XpressDox. There is no additional fee for a developer version, and no lesser fee for a run-time only version. What you get for the fee is a docussembly system—that’s their word for document assembly.

XpressDox was designed by Peter Tuffin, a former senior programmer at Korbitec, the developers of GhostFill. In designing this system, Peter drew on the lessons learned as a power user and integrator of GhostFill, a document assembly system no longer marketed in the United States. He understood the need to make the program simple so that users could start creating templates immediately. At the same time, the program needed to be powerful enough to meet the needs of programmers to assemble multiple templates, link to databases, and calculate values based on data entered.

Given the modest $150 price, it’s worth buying a license to try it out. You will find that XpressDox has sufficient power to meet your document assembly needs. You’ll have to decide whether you like the way it handles document assembly and whether or not you need to deploy document assembly over the Internet, a feature not currently supported by XpressDox.

Installation of XpressDox

For this review I downloaded the trial software from the XpressDox Web site. The program has two versions: One for Microsoft® Office Word 2007 and another for earlier versions of Word. The installer includes a free Microsoft® Office Word add-in that enables you to output Word documents directly to PDF format without Adobe Acrobat.

I installed the software on a Windows Vista 64 PC, with a quad–core processor and 8 GB of RAM using Microsoft® Office 2007. The installation took five minutes. When I restarted Word, there was a new ribbon titled XpressDox with all the features on it. If you use XpressDox as single user, you can accept the default settings. Otherwise, you should click on the Settings icon and set up a network location for all your standard folders, clauses, and help files. You should also configure your data sources which can include connectors to Access, Excel, SQL Server, MySQL, Outlook, and practically any data source. All these configurations can be saved to a central configuration file which can then be imported into any subsequent installations.

My First Template

I generally read the manual first, but this time I didn’t. The software ships with a sample templates folder. Here is a sample template:

«Addressee» «Street» «City», «State»«Zip»Dear«ChooseFromRDBList(Salutation,Sir,Madam)»«Salutation» RE: «Regarding»

Type this in a Word document and apply text formatting. Then click the Save Template button. It’s that easy. Now, click on Run Template and choose the document you just saved. That’s it.

Next Steps

After I took my baby steps, I looked closer at the sample templates and read the 39 page user guide. I discovered the power of the scripting language. XpressDox is a fully powered document assembly language. It supports all the data entry field types required for document assembly, including text, dates, numbers, currency, checkboxes, and memo fields (including text-formatted memo fields), as well as multiple choice. There is a full panoply of variable formatting functions for all data-types.

When it comes to the interview, no conditional scripting is required. If a variable is used in the template, it appears in the interview. If a variable is contained only within a conditional text block, that text does not appear unless the precondition is met.

The system requires no separate component file, library or data dictionary to assemble. Everything is in the template. That is both a strength and a weakness. Take for example, the following:

«ForEach(Mailer/CopyTo)»«position()». «CC_Name»«Caption(CC_Name,Full name of Carbon Copy)»«CC_Initials»«Caption(CC_Initials,Enter Initials)» «End(ForEach)»

This block of text creates a node called Mailer with a repeating set of Carbon Copy addressees. It defines an alternate prompt for the variable CC_Name and CC_Initials.

On first impression, the coding of templates appears too complex for the casual developer. I strongly recommend that you review the sample templates and read the manual before you venture into complex templates. The functions are quite logical, but they require you to become conversant in a different language.

XpressDox is chock full of functions, like “Caption,” “ExtractInitials,” and “FormatDate” for sophisticated document assembly. These functions, including sample code and wizards, can be accessed from the Template Author’s Toolkit. There is a feature, currently in beta, to make this process even simpler—it enables you to access both commands and data elements as you type the opening brackets.

When you choose a command, a wizard appears to guide you on the options for the command. Without these wizards, it is difficult to get the correct syntax for these functions.

XpressDox includes template management and workflow functions. You can use RunTemplates to dynamically run multiple templates in a single assembly. You can launch a word macro with the simple command «RunWordMacro(ChangeParagraphAlignment)». You can define a BaseTemplate that is merged into the template, or you can use InsertDocument to bring in a clause or subtemplate. And in so doing, you can use ReplaceField to map fields from the source template into the inserted template, if necessary.

Further, you can manipulate the outputs of a document assembly, defining the name of the output file and the answer file, and specifying where these files are stored.

If you have a data source such as a practice management system, SQL Server, an Access database, or even an Excel file, text file or xml file, you can link to it during assembly. You can either select the record during assembly, or use criteria in the interview to bring in the entire record set. The details of establishing the connection are too complex for this review, but one feature is worth noting: The database connection includes an option to RefreshSave, which enables you to preview the data in the document assembly interview, make changes, and then write back those changes to the database.

Where to use XpressDox

XpressDox is a bargain. Starting at $150 per user, it is less than half the price of its nearest competitor, and substantially less than other competitors. At that price, it is for everyone, ranging from casual coders looking to handle simple merge templates to developers who mean business about document assembly.

XpressDox supports simple document assembly. You can learn the basics of the program in 15 minutes and produce templates with variables, repeats, and conditional logic. XpressDox handles dialog scripting automatically. If you spend a little more time, you can create computations, format outputs, and even add some color to the intake interview.

At the same time, in the hands of a specialist, you can build complex user interviews, connect XpressDox templates to multiple data sources, work with clauses and master templates, use XLST functions, and develop multi-template workflow.

Areas for Improvement

XpressDox is still a new product. It is rough around the edges. The user interview is functional, but it lacks some of the polish found in other document assembly products.

While the scripting language supports interview customizations (including tabs, colors, prompts, help text, labels, and repeats), the program lacks a cohesive interview designer. Improvements in certain layout issues, such as support for multiple fields on a single line, the ability to dictate the order of variables, and alternate ways to represent true/false variables, would make the program more usable.

Further, the system currently lacks a Preview window. What this means is that you need to run multiple test assemblies to debug errors in template coding. With a preview you could try one set of answers and check whether the result is as you intended. As templates get longer, it becomes harder to identify the source of template errors.

Perhaps the most glaring omission in the offering is the lack of support for PDF or graphical forms. The software works with Word XML. Until support is added for PDF, you will be limited to text-based templates. You will have the choice of reproducing the form as a table in Word, or using a graphic as a watermark on each page and positioning the text as appropriate.

Overall Rating

On a scale of 1-5, with 5 as the highest, I give XpressDox a TechnoScore score of 4. The program’s strength is its powerful document assembly markup language, support for complex functions, and its ability to infer the relevance of variables in presenting the user interview. Its weakness lies in its lack of support for PDF templates, the lack of a comprehensive fill-point editor, and the rigidity of the dialog builder. In time, the TechnoScore will increase as the company makes the script editor more intuitive and the dialog-builder more flexible.

Response from XpressDox

We invited O2Smart to respond to this TechnoFeature. Chairman Chris Pearson emailed us the following:

As always, Seth’s review is objective and insightful. As Seth points out, XpressDox is a young product. However, given the large number of document assembly products on the market we are indeed pleased and excited to have received such a favourable Technoscore. Of course we also realize that there is still work to be done in order to address the shortcomings raised by Seth, and we are working hard to improve those aspects.

Of particular note is that we will be releasing the XpressDox Web-server version on 1 October 2010. In short this will allow users to run XpressDox Desktop as a Web version, or to run templates stored on an intranet or on the Internet, and even to launch templates from a Web site or Web application.

We’d like to thank Seth for taking time to evaluate XpressDox so thoroughly. We’d also like to thank Technolawyer for publishing the review.

About Seth Rowland

Seth Rowland, Esq. was named TechnoLawyer Consultant of the Year in 2002 for his contributions to Technolawyer on the subject of document assembly and law practice automation. He is a nationally known technologist whose company, Basha Systems LLC, has helped many law firms build customized practice management and workflow solutions. Please feel free to visit his blog for the latest on document assembly and practice management.