ConSol CM provides a powerful search mechanism for all objects involved in the business processes (customers, tickets and resources). Technically, the search is based on the Indexer, a module of ConSol CM.
The following paragraphs explain the entire topic Search in ConSol CM from an administrative point of view. Please refer to the ConSol CM User Manual for a detailed explanation about how to use the search as an engineer.
A ConSol CM engineer can use several search modes:
This is performed using the Quick Search field in the upper right-hand corner of the Web Client. The display of the results (i.e., the fields and the order of the fields in the result list) can be formatted using templates, as detailed in sections Templates for Customer Data and CM.Resource Pool - Templates for Resource Data. Please keep in mind that you can adapt the length of the result set using the system property cmweb-server-adapter, globalSearchResultSizeLimit - see System Properties for details. The result set will also be influenced by the Page Customization attribute appendWildcardAutomatically, see section Page Customization, appendWildcardAutomatically for details.
Figure 349: ConSol CM Web Client - Quick Search
For the Quick Search, a phonetic search can be configured for String fields. Please see section Configuring the Phonetic Search for the explanation of how to prepare your ConSol CM system for this feature.
With a phonetic search, the engineer cannot only find exact matches in the search results but also results which sound similar even if the spelling differs from the entered search term. The implementation is based on the Apache Commons Codec libraries.
Figure 350: ConSol CM Web Client - Search results without phonetic search
Figure 351: ConSol CM Web Client - Search results with phonetic search
This is performed using the Detailed Search page. To open this page, click on the magnifier icon next to the Quick Search entry field.
Figure 352: ConSol CM Web Client - Detailed Search
Please keep in mind that the result list length and paging of the result list for the Detailed Search can be configured using the system properties cmweb-server-adapter, searchPageSize and cmweb-server-adapter, searchPageSizeOptions. See System Properties for an explanation.
For the engineer search, you, as an administrator, can define engineer names which should not be offered in the pull-down menu in the search criteria. This is configured using page customization. Please see section excludedUserNames for details.
Please refer to the ConSol CM User Manual, section Searching for Tickets, Customers and Resources to learn how to use the search functionality.
You, as an administrator, can configure the layout of the search result list using the annotation order-in-result. This annotation influences the columns of object-specific search result sets. For example, the customer field group ResellerCompanyData, belonging to the customer data model ResellerModel, contains the following customer fields:
Thus, in a search result list, e.g., a Detailed Search which shows a result set with companies of a customer group which uses the ResellerModel will contain the two columns company_name and company_number.
For a field (i.e., column in the result table) which should not be displayed in the Web Client (i.e., in the field selector for the result list and as column in the table) at all, set the value of the order-in-result annotation to 0 (zero).
The following figure shows the order-in-result annotation of a customer field. You reach this screen by opening the navigation item Data Models in the navigation group Customers.
Figure 353: ConSol CM Admin Tool - Customers, Data Models: Setting the annotation order-in-result for a customer field
Figure 354: ConSol CM Web Client - Search result set with the two annotated columns (order-in-result)
Notes about the Order of Search Result Columns
Since the annotation order-in-result is not the only parameter which influences the order of columns in search results (tables), please find here a detailed explanation.
In the following section, user preferences means the layout of a search result table which the engineer has configured manually, e.g., the columns which should be displayed, the order of those columns or the sorting.
Rules:
The columns of a search result table can display different fields for each of the CM object types:
The values within an enum (a sorted list) or an MLA might change over time, e.g. a new software version is added to a list, an old one should no longer be available. In this case, the deprecated/old value will be deactivated. This means that there might be tickets which contain enum or MLA values which are deactivated in the current system. Of course it is indispensable that engineers can still search for tickets which contain this value. Therefore deactivated enum or MLA values are offered in the Detailed Search as shown in the following figure for the deactivated enum value Resource Pool.
Figure 355: ConSol CM Web Client - Detailed Search for modules, one enum value deactivated
The ConSol CM behavior concerning the Detailed Search of deactivated enum and MLA values can be configured using a Page Customization attribute: enableSearchForDeactivatedEnums .
The Autocomplete Search is performed implicitly when you start entering a word in an Autocomplete field, e.g., in company data or customer data when you create a ticket (see figures below).
Figure 356: ConSol CM Web Client - Autocomplete Search
Figure 357: ConSol CM Web Client - Suggestions for an Autocomplete Search
Starting with ConSol CM version 6.10.2, a search in all contacts of the ConSol CM database is also performed in the Ticket Email Editor when an engineer starts typing in the To, Cc or Bcc field:
Figure 358: ConSol CM Web Client - Ticket Email Editor: Automatic search for contacts as email receivers
The number of characters which must be typed before automatic search is activated can be configured using the page customization attribute minMailInputLength (Integer, Default 1) in the scope mailTemplate.
For ticket fields, customer fields and resource fields which should be searched, the annotation field indexed has to be set. See section The Annotation field indexed. This makes the field available for the Quick Search and for the Detailed Search.
Two types of fields are processed by the search engine:
For all data fields which have been added and configured by the ConSol CM administrators, the annotation field indexed has to be set to make the fields searchable. A field which is indexed is available in
Please note that if values of a table, i.e. a list of structs, should be available for the search, all elements of the data structure have to be annotated with field-indexed = true. This means that the list, the struct and every single data field within the struct have to be annotated that way!
You, as an administrator, can define the system's behavior with regards to search results. Depending on the values of the field indexed annotation, the search results for a contact might include all the tickets of the contact as well. The following table shows the implications of all possible values of the field indexed annotation for the different object types. The field indexed annotation has to be set for each individual data field, e.g., name and email for a contact, zip and address for a company, priority and software module for tickets, or name and model for a resource type.
Please note that two distinct perspectives are addressed here:
Object type/ value of field indexed annotation |
transitive | unit | local | not indexed |
---|---|---|---|---|
TICKET |
|
|
||
CONTACT |
|
|
|
|
COMPANY |
|
|
|
|
RESOURCE |
|
|
Please note that if it should be possible to sort result tables (in the Web Client) according to a column (by clicking on the column header), the respective field has to be indexed!
In order to activate the phonetic search for a data field, set the annotation phonetic to true for this field. The annotation can only be used for String fields.
It is important for the administrator to know how to configure ConSol CM in a way that ...
These tasks are described in the following sections.
First, some background knowledge about the Indexer, the system which manages the search in ConSol CM, is provided. This will help you, as an administrator, to look behind the scenes and understand the configuration in a better way.
The Indexer is a module of ConSol CM which creates search indexes. For each data field that should serve as search criterion (see section Fields Which Can Be Searched above), an index is created.
The indexes are stored in a sub-directory of the data directory that you have indicated during system set-up (the data directory is stored as a system property: cmas-core-shared, data.directory). The following picture shows an example for index files of a ConSol CM installation (here used for a demo environment). The demo_Datadir is the data directory specified during set-up, and all subdirectories are created automatically by ConSol CM.
Figure 359: ConSol CM Indexer - Directory demo_Datadir
Please make sure that ...
If the index directory should be corrupted or the index is not available, it can be rebuilt or repaired. Please see the following sections for details.
By default, the entire ticket text and all attachments are indexed. For all ticket fields, customer fields and resource fields, the fields which should be indexed have to have the annotation field-indexed. Please refer to the sections Ticket Field Administration (Setting Up the Ticket Data Model), Customer Field Management and GUI Design for Customer Data and CM.Resource Pool - Setting Up the Basic Resource Model for details about setting annotations to ticket fields (ticket data), customer fields (customer data) and resource fields (resource data). There are four possible values for this annotation:
A detailed explanation of the system behavior triggered by those values is provided in the table above.
Nested fields all have to have the same index type, otherwise they cannot be searched. For example, when you work with a list of structs, the list, the struct and all data fields in the struct which should be searched have to have the value transitive for the annotation field-indexed.
Usually, the index requires no manual maintenance. ConSol CM will handle everything regarding indexing automatically. There are only two cases where you have to perform manual administrative operations:
In the Admin Tool, open the navigation group Services, navigation item Index to configure and manage the Indexer. If Indexer tasks are still running, this will be indicated by an exclamation mark next to the name of the navigation group (Services) and by the number of open tasks next to the name of the navigation item (Index). In this way, even when the navigation group is not opened, you, as an administrator, can immediately notice that some tasks are open in the group Services and can then quickly identify the number of open tasks.
Figure 360: ConSol CM Admin Tool - Services, Index
The Index screen contains three main elements:
The number of open indexer tasks is also indicated next to the navigation item Index.
Figure 361: ConSol CM Admin Tool - Services: Indication of open indexer tasks
In the first line the current status of the Indexer is displayed (this is the value of the system property cmas-core-index-common, index.status):
The following operations can be performed:
Commit administrative changes
Click this button to commit the changes when you have set a ticket field, customer field or resource field to field-indexed that was not indexed before. This has to be used if the checkbox No automatic commit of administrative changes has been selected. If the checkbox is inactive, the changes will be committed automatically when you have set the new annotation(s).
Please note, that the automatic commit of administrative changes can affect the system performance.
There is a difference in ConSol CM versions concerning the meaning of administrative changes which influences manual index management!
In versions prior to 6.9.3.0, setting the annotation field-indexed from false (or not set) to true is not considered an administrative change. That means when you have added the annotation field-indexed = true for a data field which was present before, you have to modify the index manually by using either Synchronize index or Recover index.
Starting with version 6.9.3.0, setting the annotation field-indexed from false (or not set) to true is considered an administrative change. That means when you have added the annotation field-indexed = true for a data field which was present before, you have to
or
For experienced administrators only:
The operation Commit administrative changes can also be executed using the ConSol CM MBean consol.cmas.admin.global.core.indexManagement, method commitAdministrativeChanges(). You can use graphical tools like JConsole or use a command, e.g. with REST and Jolokia. If you need help with this topic, please ask your ConSol CM consultant.
If there are open tasks in the Indexer task list, the following data is displayed for each task:
Please note that data in the index is always synchronized with the ConSol CM database, i.e. during an Index update no data is deleted/removed from the index files. The index is fully usable during the synchronization process, i.e. the search operations (detail as well as quick search) can be used with their full functionality and the complete data set. Changes made after the synchronization was started are immediately reflected in the index, because these data have a higher priority than the data which is synchronized due to an index update triggered manually using the Admin Tool.
When an admin has started the index update manually (Synchronize Index), all other index tasks are removed, before this update starts.
The following system properties are also relevant for the Indexer, see following figure. Please refer to System Properties for a detailed explanation of the Indexer system properties and the Indexer and Search Configuration section of List of System Properties by Area.
The following figure shows the properties in the module cmas-core-index-common. You reach this screen by opening the navigation item System Properties in the navigation group System and selecting the module.
Figure 362: ConSol CM Admin Tool - System, System Properties: Indexer properties
For a detailed description of the ConSol CM Indexer, including the configuration of the Indexer in an environment with master and slave indexing servers, please refer to the ConSol CM Operations Manual. Here in the current section, some short information will be provided as quick introduction for CM administrators.
The indexer stores entities which require an index update (e.g. modified tickets, modified customers, new engineers) in a persistent store. This can be either a JMS queue of the application server or a table in the CM database. You can select the mode by setting the system property database.notification.enabled, default value in CM version 6.10 is false.
database.notification.enabled = false
The JMS queue queue/cm6-index will be used.
database.notification.enabled = true (should not be used with CM versions before 6.9.4.1!)
The database table cmas_index_update_serialized will be used for indexer transactions (as persistent store). The master indexing server (or the only indexing server in single-server environments) polls this database
The master indexing server polls the persistent store for new entries. If there are new entries, indexer tasks are created in the tables cmas_index_update_task and cmas_index_update_part. The master indexing server then executes the tasks from cmas_index_update_task and cmas_index_batch_update_task. In this way, the (master) index is updated.
On the master (or only) indexing server, administrative tasks are stored in the database table cmas_ index_administrative_task.
Every slave indexing server polls the master indexing server for updates and then updates its own / local index.
Please refer to the Indexer and Search Configuration section of List of System Properties by Area.
For indexing, two ConSol CM services are important:
Please see also section CM Services.
Stopping index changes notifier is NOT safe. If the indexer module discovers that the notifier is stopped and there is a message that has to be sent to the persistent store, the indexer will set the index status configuration property to RED, i.e., signal that the index needs a full synchronization.
However, stopping index changes receiver is safe. After restarting, it will pick up all of the missing changes from the persistent store.
When ConSol CM is run in a cluster of application servers, each cluster node holds a local index in its ${cmas.data}/index/ directory. The index gets updated on the (single) master server, which is then polled by all slave servers to update their copies. As a result, all indexing servers are eventually consistent, i.e., updates are not visible right away, usually with a small delay.
JGroups is used for indexer synchronization (see the JGroups.org web site for more information).