Search This Blog

Tuesday, December 9, 2008

Inprotech: Contact Addresses

Time goes so quickly. I had an intention of writing an article every one or two weeks as I have a long list of topics but before you know it a month goes by! I promise to do better.

My little article today is about contacts and names & addresses. The Inprotech database has a highly normalized set of data structures where the name is a separate data object from the address, which is separate from the telecommunication numbers. Each of them has their own set of attributes and they can be linked to each other with the goal of only having the information recorded in the database once, removing the potential for extra data entry and error.

The user interface tries to hide this complexity, providing structured input forms that attempt to lead the user to enter the information in a manner similar to how it is provided on paper and then the system builds the appropriate links and pointers. For example, an employee of a company is simply added as a name and the system defaults the address pointer to the company’s address pointer meaning that the address doesn’t need to be entered again. If the employee has a different address this is entered and the software breaks the link. A new address data item is created and linked to the employee. Same thing applies to phone numbers, faxes and the like, although, for direct telephone numbers, the choice is whether to override the number or use the Direct Line number type.

It is then possible to use the advanced functionality to link numbers and addresses to each other and to different organizations and contacts however my experience has been that users generally find this all very confusing and my recommendation is that, unless you are prepared to invest in training and good procedural documentation, avoid it completely.

Of course, with all these high ideals, the human factor kicks in with names added in a variety of different ways over the years simply because of the practicalities of day to day life. People come and go, some are trained, some are not, some understand, some don’t and some care and some don’t.

So the question that was raised: how can you tell if all contact names for an organization are linked to the same address. Here is my suggestion.

Use the Names program as the enquiry tool:
  1. Enter the company name as the Associated Name.
  2. Select the relationship “Employs” (this is the system relationship used for contacts).
  3. Select the Reverse relationship check box (Employs becomes Employs By).
  4. Remove the Has Code check box (contacts are unlikely to have a name code).
  5. Check the Fast Correction check box in the tool bar. (Fast Correction was created to allow quick changes to a defined list of names without having to go backwards and forwards between screens).
  6. Enter.
You will then be presented with a list of names and their associated addresses. Simply scroll through the list and if the address isn’t blue (and the same) then you have a duplicate address for the contact! To correct them you need to good into the name by double clicking and linking but, hey, at least you found them!

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!!

Thursday, October 23, 2008

Inprotech: Multiple Invoice Formats

I passed on a quick little tip today that’s worth publishing overall I think.

Inprotech has functionality that allows multiple invoice formats to be set up. The idea is that individual clients can each have their own specific format and this format will be automatically assigned as the invoice is raised without the operator having to think about.

It might be because a different of invoice is required for different legal entity or office, a filing case has a different layout from an opposition case or simply one client wants more detail than the firm’s standard invoice.

This automation is achieved by recording attributes against the invoice format and a best fit algorithm is applied when the invoice is raised to pick the format that best meets the corresponding attributes of the debtor.

It all works very nicely but one little issue is when there are multiple clients that require the same invoice layout. The typical example is when you are dealing with multiple subsidiaries of a large organization. Maybe there are 10 or 15 different debtors in total but they all require to the group specific invoice format.

Using the system as it stands, you need to set up the billing template and then create the 15 bill formats in the table, one for each debtor. You get 5 or 6 clients like this and all of sudden you’ve got a maintenance nightmare on bill formats!

The reason you have to do this is that the debtor is seemingly the only client related attribute that you can apply against the invoice format. What you really need is the Client Group attribute or something like that.

The tip here is to use the client Language attribute as the grouping facility. Or course, this assumes you aren’t using it actually for the client’s language!!

Set up a Language in the pick list for say “ABC Company Invoice Format” and then attach this language against all of the name records for those organisations in the ABC Group. Then set up the ABC Invoice Format (once) with the necessary template and attach this Language attribute to the format. When the bill is raised for a debtor with this language the correct format will be selected. You don’t have set up a new format record, to use the same template, if a new group company comes along and you only have to maintain the record in one place when it changes.

I also like to code the Languages with an “AAA” at the start so that all of the invoice format languages are at the top of the picklist:

AAA – Australia Post Invoice Format
AAA – IBM Format
AAA – Proctor & Gamble Invoice Format

The alternative, or course, is to delete any languages not used from the list.

This approach is also useful if you want to have a different invoice format for local clients and international clients. Maybe you don’t want more space for descriptions for clients or the banking/remittance details are different. Simply set up a language type of International Invoice Format (or vice versa) and attach it to international clients.

Of course, you then need to make sure that this happens during the client take on process. Maybe using the name copy facility with a template record, but that’s definitely another story!!

Friday, October 17, 2008

Inprotech: Price List

I have been working on a couple of projects recently where we have set up the price list in fees & charges module and then incorporated it into the workflow to have the work in progress generated for billing based upon that list. As you will be aware there is no useful reporting in the system to help this process at all.


As a result we developed, over a period of time, an SQL statement that returns relevant data with one row per charge item so that it can be easily reviewed by the user. Here it is:

select F.CRITERIANO as "Id", C.DESCRIPTION as "Fee/Charge",
A.CASETYPEDESC as "Case Type", P.PROPERTYNAME as "Prop Type",
isnull(Y.INFORMALNAME,'') as "Cty", F.SERVWIPCODE as "S/C Code",
F.SERVBASEFEE as "S/C 1", F.SERVVARIABLEFEE as "S/C 2",
F.SERVICECURRENCY as "S/C Curr", N.NARRATIVECODE as "Narrative",
isnull(F.DISBWIPCODE,'') as "Disb Code",
F.DISBBASEFEE as "Disb Fee 1", F.DISBVARIABLEFEE as "Disb Fee 2",
isnull(F.DISBCURRENCY,'') as "Disb Curr", isnull(FT.FEENAME,'') as "Fee Type",
isnull(Q.SOURCE,'') as "Quantity"
from FEESCALCULATION F
left join CRITERIA C on C.CRITERIANO = F.CRITERIANO
left join COUNTRY Y on Y.COUNTRYCODE = C.COUNTRYCODE
left join PROPERTYTYPE P on P.PROPERTYTYPE = C.PROPERTYTYPE
left join CASETYPE A on A.CASETYPE = C.CASETYPE
left join NARRATIVE N on N.NARRATIVENO = F.SERVICENARRATIVE
left join QUANTITYSOURCE Q on Q.QUANTITYSOURCEID = F.PARAMETERSOURCE
left join FEETYPES FT on FT.FEETYPE = F.FEETYPE

The idea is then to copy it into Excel and sort it as appropriate and remove columns depending upon the type of information required to be reviewed.

Sunday, October 12, 2008

Inprotech: Data Quality

Data quality is always an issue for patent attorney firms.

Many years ago we developed functionality to report upon potential data exceptions within the database. At a recent client meeting we were talking about auditing data and this report was raised, once more a good deal of people in the room were unaware of its existence.

It's called the Property Data Exceptions report and it is available from the Reports menu of the case summary window, the one that you get that lists all the cases selected and allows you to tick cases for reporting and processing. The menu item sort of sneaks in there on this window and you could be forgiven for not noticing it because it is not available on the Reports menu on the first selection window. Unless you look closely it is not so obvious that it is now available on the summary window.

The report was written for CPA renewal clients in attempt to be able to get the data as clean as possible before sending it electronically to CPA via the interfacing programs. As such, it has a bit of a renewals focus but there is some utility for the audit of data in general. It runs over the selection of ticked cases in the summary window and can be selected to run over all the cases or only those with a case type of Property.

Unfortunately there is not a lot of documentation about what the report does (in fact, absolutely none) so the following is what each of the options does to the best of my memory:
  1. Agent Details - foreign cases where no agent is recorded against the case.
  2. Application Details - the case has an application number but no application date or vice versa.
  3. Registration Details - the case has a registration number but no registration date or vice versa.
  4. Publication Details - the case has an publication number but no publication date or vice versa.
  5. Priority Details - the case has a Basis that is claiming convention but has no earliest priority date.
  6. Entity Size - the country requires definition of whether small or large entity parameters are to be used to calculate fees (eg. US and Canada) but this hasn't been recorded against the case. This is determined by an attribute recorded against the country via the Country program.
  7. Number of Claims – the country requires the number of claims to be able to calculate the renewal fee, eg. Japan, The Philippines, but the number of claims hasn’t been recorded against the case. This is determined by an attribute recorded against the country via the Country program.
  8. Number of Designs – the country requires the number of designs to be able to calculate the renewal fee, eg. Germany, but the number of designs hasn’t been recorded against the case. This is determined by an attribute recorded against the country via the Country program.
  9. Date Sequence – makes sure that the dates recorded against the case meet the validation requirements as defined by the Dates Logic rules for the applicable criteria. This is the area where you might define, for example, that the Registration Date needs to be greater that the Application Date. This validation rule will be applied at the time of data entry however any previous loaded cases can be audited overall.
  10. Official Number Format – applies any number formatting rules to official numbers entered and displays an error when the validation fails. The formats need to be set up against the number types for the country via the Country program.
Upon reflection, I can think of a number of extensions to the approach to add a lot more value but it is there right now and it is free to use!
One idea could be to use it if you are looking at giving a client access to their portfolio over the web via the Client WorkBench. Bring all their cases up in a query and run the report over it to see what exceptions are highlighted. This way you have an idea of the data quality that you are presenting to the client in a quick report and therefore assess how you want to handle the situation.
Another could be to run the report for cases in a takeover situation after they have been loaded.
Food for thought.

Friday, October 3, 2008

Inprotech: Printing Multiple Letters from the Case Enquiry

It’s interesting to remember sometimes why certain features were put in the software. Sometimes I don’t recall at all and often wonder if we were looking to solve a business problem or it just seemed a good and fun idea at the time!

It’s even more interesting when a user finds out about the functionality for the first time and tells me a really good business reason for the feature.

Case in point today is the ability to print multiple documents from the case enquiry summary window. This feature allows you to print the same letter for multiple cases. All the ones that are ticked in the summary window in fact. Go to the Forms menu and the WP Document window. Select the document from the picklist and click ok. One document will be created for every document in the summary list that is ticked.

I am pretty sure we added this because it was a good idea and easy to implement given that we were adding the “print a document from the case and name record” feature.

One of the people at my client found out about this today for the first time. She thinks it is brilliant because when a group of cases move from one attorney to another they use the bulk name change feature to change the staff responsibility but then have to print out, one by one, the new file cover sheet.

This is a PassThru letter that has information about the case, including the responsible staff member, that is attached to the front of the physical file. From now on, she will be able to print all of the cover sheets at the same time the name change occurs, with no manual intervention, saving heaps of her time!!!