Running HotDocs Player and HotDocs Developer (in different versions)

Face it: we don’t always upgrade to the latest version of a program. There is the cost of the upgrade, and the cost of “conversion”.  The cost of conversion on HotDocs upgrades has been over-rated.  With HotDocs 2009, you can keep the CMP in the HotDocs 2006-2008 format, ensuring painless upgrades.  However, if you don’t upgrade, some issues can arise.  This is particularly true for those who purchase LexisNexis automated forms or other published form set such as Wealth Transfer Planning.  These programs typically come with a license to “HotDocs Player 2009”.  This is the SAME as HotDocs User (previously HotDocs Standard) with one exception.  It will ONLY run “published form sets” and to publish a form set you need a “publisher’s key” and a special license arrangement with HotDocs corporation.  This is a non-issue if you have HotDocs 2009 (or the latest version).  However, if you don’t you can find that your own firm-developed templates NO LONGER WORK.

The Cause of the Problem

When you install a published form set it check if you have the most current version of HotDocs Developer, Standard or User.  If your machine does, the templates are installed and everything works.  If you do NOT have the most current version, it find the HotDocs6 folder in your program files directory, and inserts a subfolder called PLAYER.  It installs HotDocs player in this subfolder.  When you launch a one of the Automated Forms libraries, Windows “associates” the .HDL (Library files) with HotDocs 2009 Player.  So, that the next time you launch a library .HDL (assuming you have shortcuts to each of your libraries), it launched HotDocs Player and your library.  However, HotDocs Player will not PLAY your templates, so they are locked and unusable. Conversely, if you launch HotDocs 2008 (or earlier), it will open the last library, which will be the Automated Forms, which will throw an error that says cannot run templates, wrong version of HotDocs.

The Solution

Upgrade to HotDocs 2009 is the easiest solution.  However, you can also take advantage of the “command line” options of HotDocs to effectively tell Windows which version of HotDocs to run with each library. This is done by creating a shortcut to each library and putting them on your desktop:
1.  Right-click on each library (.HDL) file, and choose: Send To -> Desktop (create shortcut)”
2.  Right-click on the Shortcut and Choose Properties
3.  Under Target, insert the following “before” the path and name of the library file
For FIRM created Templates (Windows XP or Vista/Windows7):
“C:Program FilesHotDocs 6HotDocs6.exe” /lf="path and file name”
or
“C:Program Files (x86)HotDocs 6HotDocs6.exe” /lf="path and file name”

For AUTOMATED Templates (Windows XP or Vista/Windows7):
“C:Program FilesHotDocs 6PlayerHotDocs6.exe” /lf="path and file name”
or
“C:Program Files (x86)HotDocs 6PlayerHotDocs6.exe” /lf="path and file name”

Dcoument Assembly on the Move – Contract Express

I have never been more optimistic about the future of document assembly than today. After years of retrenchment and stagnation, the market is full of new energy and ferment.  HotDocs is under new management, but it is not clear what direction it will be taking.  On the desktop, XpressDox has been launched by key developers formerly of Korbitec, developers of GhostFill. At $150/user, a free full-functioning trial downloads, a full powered syntax markup that requires NO component file and automatically determines relevance, there is some real new energy on the desktop level.

Read more

Demise of D3 – Custom Tags vs. Markup Language

D3 from Microsystems has flown under the radar for years.  I mentioned it in a Technolawyer review of document assembly products several years ago.  It was a powerful “clause-based” system that enabled and integrated well with advanced Microsoft products, included Exchange Server and SQL Server.  It was sold by Microsystems out of Chicago and was popular with large firms looking to extend the power of macro-suite products without leaving the Microsoft environment.  The product was in fact embedded in a task panel in Microsoft Word.  Well, as you can see in the release below, copied from the Microsystems web-site, a recent change in MS Word has rendered the product inoperable, and Microsystems is withdrawing D3 from the market.  The reason, custom XML tags that a recent Microsoft product change (required by an anti-trust settlement with the European Union regulators) removed from the product, on which D3 depends.  This is not the first time that changed by a word-processing vendor caused document assembly products to “die”.  WordPerfect was notorious in earlier versions from regularly updating its macro language, rending macro-based suites based on one version inoperable on upgrade.

Microsoft Removes Custom XML Code from Office: D3 and Legal TemplatesPlus Discontinued

Downers Grove, IL – January 27, 2010 Microsystems announced it will discontinue development of D3 and Legal TemplatesPlus as a result of Microsoft’s decision to remove Custom XML code from Office. Microsoft made this decision following the ruling from the i4i infringement lawsuit.  DocXtools, Microsystems’ core product, is not affected by this decision.

Although D3 and Legal TemplatesPlus offered distinct competitive advantages and benefited from strong client demand and adoption, a significant portion of the functionality in both products was rendered inoperable in versions of Microsoft Office sold after January 10, 2010.

Microsystems evaluated various alternatives including redeveloping both products, but determined a feature equivalency could not be attained with the technologies and methodologies available today and the development work would likely result in an overall inferior solution for customers. In addition, it would require that little if any resources could be used to focus on our core product, DocXtools. Furthermore, no acceptable transition between existing D3 and Legal TemplatesPlus solutions and any new technology exists. This result would have imposed considerable migration issues on our customers.

Last year, DocXtools accounted for over 85% of Microsystems revenue. In contrast, licenses of D3 and Legal TemplatesPlus accounted for approximately 10% of revenue. As a result of these changes, development, sales and support staff related to D3 and Legal TemplatesPlus were reduced. Moving forward, DocXtools is supported by 45 people; 35 of those positions are comprised of development, support and document experts.

“Certainly we are disappointed about the difficult decision we had to make, but we are also energized by the ongoing success of DocXtools, a product that has been in the market for 11 years. In 2009, we added many new DocXtools customers and 93 customers entered into new or extended license agreements. In 2010 we expect to continue to grow our 249 firm install base as more organizations strive to improve efficiency and client service by deploying new DocXtools functionality out to lawyers and secretaries.” said Tom O’Sullivan, Chief Executive Officer.

The lesson and one to bear in mind:  close integration and embedding of a product into a word-processor, can have major consequences when the word-processing vendor “upgrades” or in the case of “D3” downgrades.  Far superior is the use of an interpreted markup language that is independent of the wordprocessor that is run through a document assembly engine that sits OUTSIDE the wordprocessor.  Exari, DealBuilder/Contract Express, GhostFill, DocXpress and HotDocs use such a markup approach. They can work with Word documents, as well as RTF documents.  Their approaches all differ in how they manage and store the component data.  But they all share the fact that they are NOT dependent on any particular version of the word processor and thus not subject to sudden obsolescence.

A Fresh Start for HotDocs

This week LexisNexis divested itself of the HotDocs software group.  It sold the assets the group to Capsoft UK.  In a post on LinkedIn, titled “Capsoft Buys HotDocs Software Business from LexisNexis,” Loretta Rupert, Senior Director of Community Management wrote:

LexisNexis is divesting HotDocs to its leading global distributor Capsoft. This divestiture is in keeping with the LexisNexis strategy to provide a family of complementary products in the legal market. HotDocs is a very popular product with many satisfied customers but no longer fits with the Practice Management product line. The sale to Capsoft allows HotDocs customers to benefit from continued support and product development to meet their evolving needs.

Capsoft is the largest distributor of HotDocs software globally and has over 13 years experience with the technology. As LexisNexis continues to transform its lineup of offerings to focus on the company’s core competencies, Capsoft is singularly equipped to maintain and enhance HotDocs software and support for you.

LexisNexis is retaining its Hot Docs Automated Forms business that utilizes HotDocs Player and unique LexisNexis content. To do this, LexisNexis is licensing HotDocs software to support Automated Forms and to resell the HotDocs software in certain markets.

The official Press Release is quoted in full below: Official Releae

EDINBURGH, Scotland & NEW YORK, Nov 17, 2009 (BUSINESS WIRE) —-Capsoft, a leading international provider of document automation software and services, and LexisNexis, a leading global provider of content-enabled workflow solutions, today announced the sale of the HotDocs(R) software business to Capsoft. Financial terms of the purchase were not disclosed.

Through retention of its Automated Forms group, LexisNexis will continue to provide HotDocs-enabled forms and precedents with solutions such as Lexis(R)PSL, LexisONE(R), lexis.com(R), Lexis(R)Library, LexisNexis Total Practice Advantage(TM), and other LexisNexis(R) Automated Forms sets.

Law firms, banks, insurance companies, government agencies and other large businesses use HotDocs document assembly software to quickly and efficiently generate customized documents such as contracts, sales proposals, government and court forms, legal documents, loan applications and medical forms. The technology streamlines these processes to deliver faster document creation, lower costs, improved document accuracy and a valuable knowledge base of an organization’s most critical documents.

Over the past 13 years, Capsoft has been distributing and implementing HotDocs software in some of the largest law firms and financial institutions in the UK, Europe, Australia, and the Pacific Rim.

Russell Shepherd, CEO of Capsoft, said, “For Capsoft, this is a natural progression and one that I am very excited about. As an established distributor of HotDocs, we know the product inside and out and are extremely well placed to invest in the continuous development of both the software and the support offered to new and existing customers across the world. I look forward to enhancing our longstanding relationship with LexisNexis through the ongoing provision of HotDocs software.”

“As LexisNexis continues to transform its portfolio of offerings, we believe that Capsoft—as the largest distributor of HotDocs software globally—is singularly equipped to maintain and enhance HotDocs software and support for that product’s customer base,” said Alison Manchester, vice president of content management services at LexisNexis.

About LexisNexis(R) LexisNexis(R) (www.lexisnexis.com) is a leading global provider of content-enabled workflow solutions designed specifically for professionals in the legal, risk management, corporate, government, law enforcement, accounting and academic markets. LexisNexis originally pioneered online information with its Lexis(R) and Nexis(R) services. A member of Reed Elsevier (NYSE: ENL)(NYSE: RUK) (www.reedelsevier.com), LexisNexis serves customers in more than 100 countries with 18,000 employees worldwide.

About Capsoft Capsoft is a privately held company based in Edinburgh, Scotland. The business was formed in 1996 to provide document automation services to large corporations and law firms. Capsoft now provides software and services to hundreds of law firms across the globe, and provides business critical software and services to many large corporations, including some of the largest banks in the world.

SOURCE: LexisNexis

HotDocs Instruction – QUIT

The HotDocs QUIT instruction specifies that any code in a computation after the QUIT instruction is to be ignored as code. There are two major uses for this instruction.

Firstly, because QUIT stops HotDocs processing a computation as code, it means that you can put it at the top of a computation to stop that computation from being processed.  Very handy if you are halfway through a computation or cannot otherwise make it work.

Secondly, you can use QUIT as a way to add developer comments – simply finish your computation code, enter the QUIT instruction at the bottom, then enter any comments you want after the QUIT command.

The reality is that the QUIT instruction doesn’t really do anything that comments don’t already do. And thanks to HotDocs’ “Comment/Uncomment” block function, its pretty easy to work with large sections of commenting code.

PLAY MACRO

Sometimes, there are things you want done to your assembled document that HotDocs simply cannot do.  Perhaps you want to check margins for a specific section, re-style an inserted template on the fly or automatically run a custom in-house print macro upon completion.  For these sorts of tasks, the PLAY instruction is what you wish to use.  PLAY will tell your word processor to run a specified macro after your document has been created (ie: after the interview, but before it displays as a document).  If there is more than one PLAY instruction in a template, HotDocs will process them in the order encountered.

The syntax for a PLAY instruction is pretty simple:

«PLAY "MyMacro"»

To insert the PLAY instruction, go to the HotDocs button on your HotDocs toolbar, click “Other Field”, then specify PLAY from the drop down box.  You will be asked for the macro name you wish to run.  Click OK.

Notes About PLAY

If you use WordPerfect, your macro can be stored anywhere. If it is outside the default macro location, then your play instruction must have the full file path.

If you use Word, the macro must be stored in the template itself, normal.dot or some other template that is loaded and available at the time you assemble your document.  If you are using Word RTF templates, you may optionally associate a specific template via the Component Manager.

HotDocs Instructions – LIMIT

When it comes to REPEATS in HotDocs, LIMIT is one very handy instruction to know how to use.  As its name suggests, it will LIMIT the number of iterations a repeat can hold, by placing the instruction in the dialog script of the dialog you wish to limit.  Please note that this is entirely different to the number of rows shown on a repeating spreadsheet dialog.  LIMIT will restrict a dialog to have only (for example) 3 iterations, where as the rows shown command will allow a repeat to hold countless iterations, but only show a specified number.

The most basic use of LIMIT is to provide a fixed number, such as:

LIMIT 3

This doesn’t really help you much, unless you are certain your dialog is only ever going to repeat 3 times only.  Here, we can introduce the concept of a user-specified LIMIT.  Lets say we have a dialog named Child DLG that collects some general information about all the kids, as well as a variable named CHLD CNT – asking the user how many children there are.  On Child DLG is a repeating sub-dialog Children RPT – it will repeat once for each child.  In the dialog script of Children RPT, we could have

LIMIT CHLD CNT

This is better – we ask them how many kids, then LIMIT the repeating dialog to that number.  This will stop “empty” repeats in our templates where users have clicked forward and answered a field accidentally.  Great.  Lets make it a bit easier to use.  Instead of CHLD CNT as a number variable, lets use CHLD Num MC as a multiple choice variable, with options from 1 to 20.

LIMIT INTEGER ( CHLD Num MC )

Now, our user can click the number of kids from a list and our LIMIT instruction converts the multiple choice value to a number value.  Simple, straight forward and user friendly.

The above technique can also be used to dynamically show more rows on repeating spreadsheet dialog dynamically

HotDocs Instruction – LANGUAGE

The Language instruction allows you to design, code and assemble templates in HotDocs in a language other than English.  To be able to use this feature, you must first contact a Lexis Nexis sales representative to obtain a DLL for the language you wish to program with.  HotDocs has DLLs for the following languages:

ENG (English), DEU (German), DES (Swiss German), DEA (Austrian German), FRA (French), NLD (Dutch), ESN (Spanish), ITA (Italian)

Using any of the codes above, the instruction you place in your template is as simple as:

LANGUAGE FRA

Also with the Language instruction, it is possible to format the thousands and decimal separators.  The following instruction would use the Italian language, set the thousands separator to a period “.” and the decimal separator to a comma “,”.

LANGUAGE ., ITA

INSERT template

Not to be confused with the ASSEMBLE command (which queues a template for assembly after your current template has finished), the INSERT command does exactly that – inserts the content of one template into a different template (known as the “parent” template).

This instruction is extremely handy and very under utilised as it is useful for a wide variety of things, not just inserting letterhead!

The INSERT command should largely be used in templates.  There are ways to use the INSERT command inside a computation, but there are limitations and rules that apply.  Allegedly, an INSERT command cannot be placed inside headers or footers in your template however, we have found that it works just fine with footers, which can save some time in some situations.  At any rate, here’s how it works in several different ways –

Template in same location as the template you are inserting into (known as the “parent” template)
«INSERT “Template.rtf”»

Subfolder of location of parent template
«INSERT “SomeSubfolderTemplate01.rtf”»

Full file path for anywhere on your system
«INSERT “T:HDTemplatesLitigationTemplate01.rtf”»

Using a Reference path
«INSERT “^HotDocsLitigationTemplate01.rtf”»

Default Templates folder
«INSERT “Template01.rtf”»

The INSERT statement is quite often used inside IF statements to conditionally insert oeprative parts of documents.  Interstate notices, optional schedules, attached forms etc are all usually INSERTed inside IF statements.

Common Uses for INSERTed Templates

  • All stationery, such as letterheads, faxes and memos, with accompanying headers, footers and page numbering
  • Signing / execution clauses (say, a single “corporate execution” block and a single “power of attorney execution” block)
  • Court headers and footers
  • Boilerplate text such as acceptance clauses, court seals, hearing dates, witness blocks and the like
  • RE lines on letters
  • Schedules

Additionally, INSERTed templates are quite often used simply to segregate content in long templates, so that each template can be tested by itself in isolation to the rest of the template.

Some Off Label Uses

With a bit of effort, it is possible to set up INSERT templates to take parameters.  All you have to do is write your INSERT template with a temporary variable that you SET before you insert.  Here’s a quick example:

INSERT Template Code:

Some random text up here that is boiler plate and always appears regardless of how the INSERT template is used.

«IF OPT UseNotice TF = TRUE»
This notice must be complied with within 14 days unless otherwise specified.

«END IF»
More random text here about something or nothing at all really.

«IF tmpTE = "Borrower"»
This notice is directed to the Borrower's solicitors and must be complied with within 7 days of the date hereof.
«ELSE IF tmpTE = "Lender"»
This notice is directed to the Lender's solicitors and must be complied with whenever convenient to the Lender.
«END IF»

«IF OPT UseFooter TF = TRUE»
This footer is absolutely pointless except insofar as it demonstrates the concepts of parameters in INSERT templates as applied by the HotDocs document assembly engine.
«END IF»

So all we have really done here is code the INSERT template with some preset variables to hold preset values.  Then, when its time to insert the template, we set the parameter variables prior to inserting the template.

PARENT Template Code:

«SET tmpTE TO "Borrower"»«SET OPT UseNotice TF TO FALSE»«SET OPT UseFooter TF TO TRUE»
«INSERT "OurInsertedTemplate.rtf"»

IF, ELSE IF and ELSE

The humble IF statement is the core of all logic in any programming language, HotDocs included.  IF statements don’t actually do anything but rather, they provide a structure within which other commands are executed.  To bring any intelligence to your document-producing systems, you must understand the IF, ELSE IF and ELSE statements, as they are used everywhere.

I’ll work with a computation for these examples, as it is simpler than the template version, as no chevrons are required.  Lets get some examples happening.  Lets say we have a variable named “Var TE” and Var TE has a value of “Bob”.

Example #1a – the basic IF statement

IF Var TE"Bob"
"His name is Bob"
END IF
//this would produce "His name is Bob".

Example #1b – the basic IF statement

IF Var TE"Joe"
"His name is Joe"
END IF
//this would produce an error

The above code produces an error because Var TE does not equal Joe (it’s still Bob) and there is no script in place to handle what happens if the variable isn’t equal to “Bob”.

So lets look at how to handle that with an ELSE statement.

Example #2 - IF and ELSE
IF Var TE"Dave"
"His name is Dave"
ELSE
"His name is not Dave"
END IF
//this would produce "His name is not Dave".  In this example - we have some code to run if his name is "Dave", ELSE (readable as "if its anything else in the world..."), produce "His name is not Dave".

This still isn’t ideal.  What if we want to do something specific for Bob OR Dave, but something entirely different if it isn’t either of them?  Lets look at the ELSE IF statement.

Example #3 – IF, ELSE IF and ELSE

IF Var TE"Dave"
"His name is Dave"
ELSE IF Var TE"Bob"
"His name is Bob"
ELSE
"His name is not Bob, nor is it Dave"
END IF
//This would produce "His name is Bob". If we set Var TE to the value of "Mark", the result would have been "His name is not Bob, nor is it Dave"

The easiest way to read this stuff when you’re learning is as follows:

IF (Some specific condition is true)
//do something here, for this condition only
ELSE IF (Some other specific condition is true)
//do something different, for this condition only
ELSE (if its anything else in the whole wide world)
//do something different here if nothing previously is true
END IF (close the statement)

In english, it would read exactly as it is typed above – IF something is true, do something, else if something different is true, do something different for this condition only, else if its anything else in the whole wide world, do something here.  It gets tricky, but it is really just a series of “what if this is true” questions and results.

Some things to remember….

1) Every IF statement must have a matching END IF – they are a fixed pair with no exceptions!
2) ELSE and ELSE IF statements can only occur inside an IF/END IF pair.  They do not have matching END IFs themselves
3) Nested IF and END IF pairs must nest “inside” each other.  I’ll use bracketed numbers in place of conditions to demonstrate:

IF (1)
//do something

IF (2)
//do something here
ELSE
//do something different
END IF(2)

IF (3)
//do something different again
ELSE IF (3)
//do something weird
ELSE (3)
//do something really weird
END IF (3)

END IF(1)

As you can see, IF statements work from the inside out.  It is nearly always best practice to write your IF and END IF at the same time, then move your cursor back and complete the rest of the commands between the IF/END IF pair.  If you open an IF statement and immediately close it, you will not lose where you are up to with code and save yourself substantial time debugging problematic HotDocs code.

Please note: HotDocs will evaluate your IF statements from top to bottom.  In the above example, if IF statement #2 was true AND IF statement #3 was true, HotDocs would only produce #2 – because it will find a true If statement, produce the result and then jump straight to the END IF.  Bear this in mind when designing your code.