For most implementations, all matters will have a three-tiered matter taxonomy fieldset:
-
area_of_law
-
matter_type
- matter_subtype1
-
matter_type
All of the fields above will be dropdowns. The available matter_type dropdown options will depend on the selected area_of_law; the available matter_subtype1 dropdown options will depend upon the chosen matter_type.
Below are some screenshots that show the matter taxonomy approach described above.
The matter_type dropdown:
The matter_subtype1 dropdown:
Problems to Solve
When implementing this matter taxonomy, several competing problems must be solved:
- Customizing Dropdown Options: At the most basic level, you’ll want to populate the taxonomy dropdown options based on the client’s specific legal operations requirements. In other words, you’ll want to customize the available dropdown values in the area_of_law, matter_type, and matter_subtype1 dropdowns.
- Filtering Dropdown Options: Filter the available matter_type and matter_subtype1 dropdown options based on the value that the user selected one level up in the taxonomy chain. For example, only show matter_type dropdown options corresponding to the selected area_of_law.
- Preventing Blank Dropdowns: Never show a blank dropdown. For example, only show the matter_subtype1 field if the selected matter_type contains subtypes (many do not).
- Hiding/Showing Non-Taxonomy Fields: Once a user selects a complete taxonomy set (e.g., an area_of_law, matter_type, and matter_sub_type), immediately show other fields that map to that taxonomy. For example, if a user selects Disputes (area_of_law), Intellectual Property (matter_type), and Patent (matter_sub_type), it immediately shows additional fields that map to this taxonomy (e.g., a patent_number field in this example).
To solve these problems, use the out-of-the-box plumbing already in the environment. This plumbing uses the following Onit objects:
- Fields:
- area_of_law: The area of law (e.g., Intellectual Property).
- matter_type: The matter type (e.g., Patent).
- matter_subtype1: The matter subtype, if applicable (e.g., Infringement).
- hide_matter_sub_type: A `TRUE` or `FALSE` string used to hide the matter subtype dropdown when there is no matter subtype.
- area_of_law_matter_type_merged: Value of area_of_law and matter_type concatenated. Used for hiding and showing additional Fields dependent on the selected matter taxonomy. This concatenation field is a workaround to a Listcombo’s limitation of only being able to filter based on the value of a single another field – as a result, you must create a hidden field that contains a concatenation of two other fields.
- UI Action: A UI Action named Update Tags Using List Lookup extracts values from the matter taxonomy list. This UI Action displays and hides Fields depending on the selected matter taxonomy and populates the values of the hide_matter_sub_type and area_of_law_matter_type_merged fields. This action fires immediately after a user selects a new value from any of the matter taxonomy fields.
- List: An Excel spreadsheet named Mattertypes uploaded to Onit. This list orchestrates much of the solution, containing the dropdown options, tags, and mapping logic. While the base Onit ELM product comes with this list by default (available on the /admin page), you will want to edit it to fit your needs.
The following sections explain how the Onit objects above solve each matter taxonomy problem mentioned earlier. You can use this information to understand and customize the out-of-the-box configuration to your needs.
Note: To master this solution, it’s important that you are familiar with the content covered in the following Onit tutorials: Using a UI Action to Update Fields, Formatting, Importing and Updating a List, and Using Tags to Hide/Show Fields.
Problem: Customizing Dropdown Options
Customizing the matter and matter_subtype1 drop-downs in your Matter App is straightforward. When you update the taxonomy, upload a new list with your latest information.
The Excel spreadsheet containing your matter taxonomy must be formatted as seen below:
For the list to be correct, it must have the following rows:
- fieldLabel: The fieldLabel row (Row 1) should match the name of the Field in Onit exactly (e.g., area_of_law)
- type: The type row (Row 2) defines the column’s datatype. The following datatypes are available: string, date, datetime, number, decimal, or boolean.
- data: The data row (Row 3 and beyond) tells Onit that all values in the row contain the actual values that an Onit App can use to populate dropdowns, hide/show fields, and activate/deactivate tags.
In addition, note the following information regarding the columns shown above:
- area_of_law_matter_type_merged: This should concatenate Column C and Column D, with a hardcoded dash (-) between the two values. It is recommended that you use Excel’s =concatenate function to populate this column.
- hide_matter_sub_type: This value should equal TRUE for any given row if Column F is null. Otherwise this value should be FALSE. It is recommended that you use an Excel calculation similar to the following to populate the value of this column: =IF(ISBLANK(F3),TRUE,FALSE).
Once you’re done creating and uploading the list, create a new test Record on the Matters App to ensure that you can see the correct area_of_law, matter_type, and matter_subtyp1 values.
Problem: Filtering Dropdown Options
The matter_type and matter_subtype1 dropdowns are filtered based on the value selected by the user one level above in the overall matter taxonomy (values in the area_of_law dropdown are the highest level in the matter taxonomy and require no filter). This is achieved using standard Listcombo filtering logic, as shown below.
For example, using the configuration shown above, once a user selects an area_of_law the matter_type will be automatically filtered.
Moving one level down the hierarchy, depending on the matter_type selected, there may or may not be matter_subtype1 options to choose from. The matter_subtype1 options must be filtered using two values: area_of_law and matter_type. A hidden Field named area_of_law_matter_type_merged is populated via the UI Action Update Tags Using List Lookup.
For example, when a user selects Corporate and Finance, the value of area_of_law_matter_type_merged becomes Corporate – Finance. Using the value from this hidden Field the UI Action filters the Mattertypes list on the area_of_law_matter_type_merged column. The appropriate matter subtype will be shown in the matter subtype dropdown when the two values match.
Problem: Preventing Blank Dropdowns
When a matter_type does not have any corresponding matter_subtype1 values, we want to prevent a blank matter_subtype1 dropdown from being shown to the user. We will use a column called hide_matter_sub_type in our Mattertypes list to accomplish this. This column contains the string TRUE when the matter_subtype1 dropdown should be hidden and FALSE when it should be shown. The UI Action Update Tags Using List Lookup looks into this column to determine the hidden condition of the matter_subtype1 dropdown.
The Liquid used by the UI Action to perform the lookup into the Mattertypes list is as follows:
{% capture lookup_value %}{{area_of_law}}-{{matter_type}}{% endcapture %}{{ lookup_value | list_lookup: 'Mattertypes', 'area_of_law_matter_type_merged', 'hide_matter_sub_type' }}
This Liquid will perform a lookup using the value of area_of_law and matter_type (e.g., Corporate and Finance). The lookup will check values in the area_of_law_matter_type_merged column for a match. This lookup will then capture the value of the appropriate hide_matter_subtype column and push that into a field by the same name.
The hidden condition on the matter_subtype Field is then written to check the value of the hide_matter_subtype field, as seen below.
The Javascript for the Hidden condition property is as follows:
[hide_matter_sub_type].trim() === 'TRUE' || [area_of_law] == '' || [area_of_law] == null || [matter_type] == '' || [matter_type] == null
This JavaScript checks if the hide_matter_sub_type field is equal to TRUE, and if it is, then the field will be hidden. This JavaScript will also hide the dropdown when either area_of_law or matter_type equals null or if matter_type is blank.
In some conditions, you may want to hide the matter_type dropdown for specific areas_of_law that have no further classification (e.g., no matter_type options). In this case you would create a JavaScript hidden condition on the matter type Field to specifically check for areas_of_law values that do not have matter_type options. Your JavaScript should look similar to the following:
[area_of_law] == 'Compliance' || [area_of_law] == 'Arbitration' || [area_of_law] == null
This JavaScript would hide the matter_type dropdown when the area_of_law is Compliance, Arbitration, or when area_of_law still needs to be selected.
Problem: Hiding/Showing Non-Taxonomy Fields
Using Tags, we can specify which Fields will be displayed to the user for different taxonomies. For example, when you choose a Litigation-focused matter taxonomy set, Onit should immediately show a series of other litigation-related fields.
All Tags should be specified in the Mattertypes list that you upload.
Each Tag specified in your Mattertypes list must have a corresponding Tag created in Onit. To create new Tags, navigate to the Tags node in your Matter App’s Advanced Designer page.
Create a new Tag for each Tag in your Mattertypes list by clicking the Add button. Name the Tag as it appears in your Mattertypes list and click Ok.
The UI Action Update Tags with List Lookup will use values from the tags column to hide/show the appropriate Fields. When the UI Action and the Tag extract, the Tag value is applied to a Field match, the Field will be displayed.
Tags are applied to Fields in the Matter App Wizard under the Advanced tab of that Field. Choose the correct Field in the Wizard to use a Tag to a Field and click on the Advanced tab. Under the Tags box, choose the appropriate Tags for that Field. Once you are done assigning Tags, save your changes.
Fields not assigned a Tag or a JavaScript-based hidden condition will always show.