Search This Blog

Sunday, November 9, 2008

Inprotech: Prepaid Funds

Management of cash is a crucial component for any business but even more so for a patent attorney firm who:
  • incur the liability for disbursements on behalf of their clients,
  • can be dealing with fledging and start up organisations who often have their own survival issues
  • deal with foreign associates who expect long trading terms and work outside of the firm’s jurisdiction!!
I am not going to even mention management of foreign currency risk, particularly in today’s volatile environment.

One way of managing the cash flow with local or direct clients is to obtain funds in advance from the customer, before the work is done. This could be in the form of obtaining a deposit before performing a broad range of activities or asking for a specific amount to cover a specific activity eg. payment of registration fees to obtain the certificate.

In the first instance the customer is required to provide cash in advance because a large amount of expenditure will be necessary, eg. a large multi-country protection of a brand, and the provision of cash is based upon the size of the project, the goodwill of the client and the commercial need to cover the outgoings. In the second instance, the attorney has more leverage, in that the payment is necessary to finalise the entire filing process.

Inprotech has one major way to handle these situations: prepayment processing. Another way for the second instance is billing in advance but I will talk about that in another article.

A prepayment is where the client pays funds in advance of receiving an actual invoice. The money is receipted into the business and recorded as a special form of unallocated cash, classified in the system as a prepayment.

These funds can then be marked for different types of use. For example, it may be only for patent cases or for trademark cases, for renewals work or non-renewals work, or for a specific case or set of cases. Alternatively, the sum of money can be just allocated to the client and therefore available for use against any piece of work for the client.

The definition of the funds as a prepayment as opposed to unallocated cash means that the money become available to be applied to the invoice during the billing process. This is done via the Apply Credits button that will become enabled when funds are available for a case being billed.

A list of prepayments will be shown that match the attributes of the case as defined against the prepayment above eg. if the prepayment has been allocated for patent work and the case is a trademark case the item will not be available to apply to the invoice.

Once the amount is selected (and the invoice is finalized) the cash will be accounted for correctly in the Accounts Receivable ledger, if you are using this, and, presuming the invoice format has been set up correctly, shown on the bill. Total Due less Prepayments Applied equals Total Now Payable. If the prepayment has been applied to the entire invoice then a zero bill will be created.

Various site options apply to the use of prepayments. There is one that provides for a warning to be shown if prepayments are to be applied during the billing and another that checks total WIP for a case against prepayments available and warns if the total exceeds the amount during the time and disbursement recording process. In this way prepaid work for the client can be monitored as the work is being performed rather than waiting until the billing process to find out that all prepaid funds have been expended.

A particularly interesting site option is AR for Prepayments (or something like that!). This allows prepayment functionality to be implemented where the firm doesn’t have a license for the Accounts Receivable module, although you obviously need a license for the Billing module. When this option is set to true a limited form of the Accounts Receivable program becomes available. All functionality, outside of recording receipt information for prepayment processing, is disabled.

The other areas that prepayment information is shown is on the WIP tab in the Cases program, where totals amounts for the case and debtor are shown as well as the Professional WorkBench against the client record and the case record. I think it can also be available for the client to see in the Client WorkBench but don’t quote me on that one. That’s a whole other set of decisions anyway.

The last area that needs consideration for prepaid funds is what I will call “proforma invoicing”. Occasionally, a client may require an actual invoice of some form before they will release funds. This could be because they believe that the tax regime requires an invoice or simply that their internal processes require a piece of paper.

In this instance you cannot raise an invoice (even one in advance) through the system because that will create revenue and debt that needs to be paid. What needs to be done is the creation of a proforma invoice through word processing. This is a piece of paper that looks like an invoice with the amounts and tax applicable (if necessary) but it not a financial document from the accounting systems standpoint.

If you are doing a lot of these it is probably makes sense to create a PassThru template for the sake of efficiency and consistency. I would also recommend some sort of numbering system and register to tracking the proforma invoices sent to clients. Probably easiest to do this manually although if you are database savvy it is relatively simple to set up some SQL to generate the next proforma invoice number (and create and monitor the register) via Docitems and PassThru.

Monday, November 3, 2008

Reflections on an Inprotech Release 4 Upgrade

I have recently been involved with delivering a project for a client that required moving the firm from release 3.3 of the system to the latest release 4 patch.

The firm has approximately 150 staff and uses virtually all of the client/server Inprotech modules as well as the Client WorkBench. The software is integrated with their document management system and there are a significant number of in house written reports.

As a result, the system touches on all users in the business, as well as clients. The project was therefore staged in a manner that tried to mitigate risk of disruption to the business from the change as much as possible. We also wanted to introduce the new versions of the software in a manner where the staff could take advantage of any useful new features and, as an adjunct, document the overall upgrade process so that moving to future releases would be easier.

The approach we took was as follows:
  1. Analysis & Preparation. All release notes were reviewed and assessed with the business to determine which areas of new functionality could be utilized by the firm and what level of configuration was required.
  2. Unit Testing. The software was installed in a test environment to allow configuration and testing of the new functionality identified in preparation for acceptance testing.
  3. Integration Testing. The newly configured software was tested then with integration to Word, the document management system and the in house reports.
  4. Acceptance Testing. Representatives from various areas of the business were co-opted (conscripted??) to test the software that they were affected by in a test lab environment with test cases that mimicked everyday usage of the software.
  5. Deployment. Training materials showing the changes in the software between the different versions were constructed and training courses were delivered to reinforce the major changes. Actual deployment occurred over a weekend when the production database was upgraded and the new requisite client components for the user PCs were delivered via a silent install process that had previously be developed and tested.
In my view a formal approach is necessary for major upgrades where lots of people are affected but the same principles apply to smaller releases, just less effort is necessary and you could probably skip the acceptance test phase (or make it significantly smaller) and the deployment step will be easier.

For this project we generally achieved our goals with an excellent team effort however what are the things that others maybe should be aware of?

The first thing we found was that the effect of the new release on end users was fairly minor. This is because the big ticket items in the release: electronic data exchange, trust accounting, IDS, Canadian GST, Clerical/Professional WorkBench are only applicable if you do massive amounts of renewals, work in a particular jurisdiction or use the new web modules.

There are some interesting minor enhancements that we took advantage in the back office of but, to be honest, the most beneficial piece of the release to the user (outside of being on the current version for support) is the ability to maximize the screens and have the software, in the majority of cases, re-size itself to display more information (and remember that it has done it).

The re-design of the reminders screens is also nice for the project but that was available in a previous release so not necessarily a release 4 thing. As well the Launch Pad now docks and remembers where it has been docked between logons which adds to the overall usability a little bit.

Note however that the re-sizing only applies to screens that are of a tabular nature so it does not do anything for screens with fixed field locations such as the Instructor tab or some of the name tabs. Note also that it has only been applied to the main screens in the Cases & Names module. The other programs and the timesheet, billing and accounting modules are being done in a future release or releases as I understand it.

The second thing we found was that we had quite a few issues with the document generation Word DLL and had we three iterations of this crucial little piece of code delivered to us during the testing phase. Hopefully it is now stable in the current patch level.

The main issue was around the way Null values are handled. Instead of returning no value for Null the dglib.dll (the module that handles data requests from letters) was now returning a space. The client’s templates were checking for no value and colour highlighting these fields in the letter to indicate possible missing data. When a space was returned the check no longer highlighted the field.

The new dglib.dll is also less forgiving with poor coding. Whilst this is probably a good thing in some respects it does mean that some recoding work may be required for letter templates and testing of letters is critical to a successful upgrade. The following were typical of the issues found:
  • You must always register a Docitem BEFORE it can be referenced in any VBA code. In the previous version all Docitems were registered by a separate DoItems call, usually at the end of the macro, but now they are registered dynamically so the order is more important.
  • The registeritem must nominate the correct destination type and cannot be blank. In the previous version it would default to being a string returned to a bookmark if there were errors which sometimes allow the template to complete even though the code was wrong.
The nett result was that a significant number of the Word templates used were affected and as a result a good deal of work was necessary to make changes to the templates and testing them. As the generation of documents is probably one of the key deliverables to the system to the business we really had to make sure that this was right before we deployed.

Other things to look out for:
  • The reminders program seems to handle security slightly differently (although we are not sure if it is a bug) so we had to do some extra configuration here,
  • There is an annoying bug that has been introduced in the DocItems program that resets the flag for images and stored procedures even though you don’t change it.
  • The client PC now requires to have some software to be loaded to it. (Previously the client had run the entire system from the server).
  • We had to upgrade SQL server 2000 to SP4 with the latest hotfix to resolve some policing and billing issues.
  • Some custom changes were needed to the upgrade scripts because the client used different codes to CPA (eg WO instead of PCT and different code for ‘Leave Open in Word’ delivery method ) .
  • An extra cleanup script was required to remove some duplicated names attached to cases in CASENAME (mainly contacts but also other name types). We at first thought that this was something site specific but other clients have had the issue and CPA support have a script to assist if you know to ask for it (which you do now!).
  • A fairly significant workbench issue in drilling into case details which were corrected by stored procedure patches, which presumably will be incorporated into the main release at some stage.
Lastly, a special thanks to guest editor Dave Palmer who revised and wrote some of the more technical items here!!