This is a technical entry with my research-and-experiment notes. Feel free to add or argue. Try at your own risk.
This entry is dedicated to customization of “Project Entities” – i.e. data objects in QC, with the examples from “Defects” module (or “Issues”, as I renamed it).
Project Customization view (1) enlists components on the left side (2) with the component details view in the center panel. Project Lists (2a) is a cross-component collection: whenever an enumeration type is used, the lists and their elements need to be declared as a standalone entity.
For Issues (3), QC has System Fields and User Fields categories (4). In fact, it’s all issue properties. System Fields are hard-coded in QC database and cannot be removed but are still customizable to some extent. We cannot add a new System Field either. User Fields category (4) enables adding /removing new fields (5) and custom setting of their properties.
General Field Settings
There’s a fixed list of System Fields (1) . Adding or removing (2) new System Fields is not allowed. Settings (3), however, are a bit customizable.
- Name (4) is hard-coded (“BG_STATUS” in the example below).
- Label (5) is customizable, and that’s what is displayed in the UI.
- Type (6) is hard-coded for System Fields.
- Length (7) is hard-coded for System Fields.
- Sanitization (8) is hard-coded for System Fields.
- Flags (9) are partially customizable for System Fields.
- Lookup list (10) for System Fields is pre-defined; you can add/remove your custom elements but cannot modify/remove pre-defined items.
Online help system provides a good description for all these Field Settings. There are few tricks though:
- You’ll have to explicitly hide unwanted fields and make them un-editable for users
- All references to the fields in the code are done through name, so you may need to create a table mapping field names (“BG_..” type) to meaningful labels
- History flag is required both for change tracking and data collection for trending reports
- Verify Value flag turns on automatic verification of user input. Make sure to turn it on for List type.
User Fields category allows adding/removing (1) and customizing settings of the fields. Name (2) is auto-generated and hard-coded, so again – you may need to have a translation table for yourself to map “BG_..” type names to meaningful labels (3). There are four data types (4). And you can declare your custom lists (5).
There are also a few tricks:
- Come up with a consistent naming convention for the lists for better tracking during future maintenance
- Severity and Priority have a reversed (comparing to the industry common) order. Severity 1 is a ‘cosmetic’ problem by default.
- It seems HP ALM does not consistently handle timing out for when you’re in customization mode. So make sure to save changes to prevent their loss or corruption during time out.
- I’ve also experienced a few crashes upon saving of the customization (at least, in version 12.2) which led to unknown state – some changes were saved, some were not. So I applied changes one by one in a careful sequence, saving and logging out to make sure that the changes are “committed” to the server.
- It takes a few minutes before admin changes become effective. So when customizing and testing the changes you may encounter that “it didn’t work” – wait 3-5 minutes and retry before digging for mistake.
And remember main connections of Project Entities:
- Project Lists for List data types
- Permissions for customization of access depending on User Group
- Workflow for customization of defect lifecycle model and on-the-fly rules and permissions
- Reports – for they are based on the data fields