Understanding Sun Master Index Configuration Options

Master Index Data Manager Configuration

The Master Index Data Manager (MIDM) is the web-based user interface for the master index application that allows you to monitor and modify data in the index. This interface is highly configurable, and can be customized by modifying midm.xml in the master index project.

The following topics describe the MIDM and the midm.xml structure, and provide a sample of the file structure.

About the MIDM

The MIDM is a web-based interface that allows you to manage and monitor the data in your master index database. Using the MIDM, you can search for records; add, update, deactivate, and reactivate records; review and resolve potential duplicate records; compare records; and merge and unmerge records. You can also view a transaction history for each record, view an audit log of access to the database, and run reports on the state of the data and the transactions that have been performed. This interface is configurable, allowing you to customize certain processing properties as well as the appearance of the windows.

The MIDM facilitates the use of screen readers and other assistive technology by providing information through HTML tags. It also provides tooltips when the cursor is placed over links and images on the MIDM pages.

MIDM Configuration Components

You can configure several properties of the MIDM to display the information you want in the way you want, to define the way searches can be processed, and to define the criteria that can be used for each search. Certain implementation options are also configured in midm.xml, such as application server information, debug options, and security information.

The configurable properties of the user interface fall into these categories:

Object and Field Properties

In midm.xml, you specify which objects appear on the MIDM windows and the order in which they appear. You can also specify the fields displayed in each object and configure properties for each field. This file controls the configuration of a field’s name, length, order of appearance on the MIDM, required data type, whether text can be entered into a field or if it must be selected from a predefined value, whether a field or combination of fields must be unique to a parent or child object, and whether the value of the field is hidden under certain circumstances. You can also specify whether the format of a field is dependent on the value of a related field (for example, the format of a credit card number field could be dependent on the type of credit card specified).

Relationship Properties

In midm.xml, relationships define the hierarchy of the object types listed on the MIDM. By specifying relationships, you define parent and child nodes. The parent and child nodes you specify in the relationships element must also be defined in the node elements of the file. You can specify one parent object; the remaining objects must be child objects to the parent you define. The relationships section is dependent on the relationships section in object.xml, and should only be changed if corresponding changes are made to object.xml.

Display Properties

You can configure these display options for the MIDM: the appearance of pages, audit log availability, local ID field labels, and the configuration of the search pages.

Page Display Properties

You can configure several display properties for the pages that appear on the MIDM. For example, you can specify whether certain system fields are visible, the type of object to display on a page, and the name of the tabbed headings. You can also rearrange the order of pages or sub-pages.

Audit Log

In the display configuration, you can specify whether an audit log is maintained of all instances in which object information was accessed from the MIDM. If the log is maintained, then information about each instance of access can be viewed on the MIDM. This is especially useful in healthcare implementations, where privacy of information is mandated.

Local ID Labels

A local ID is a unique identification code assigned to a record by the system in which the record originated. By default, the fields that display the local IDs are named “Local ID” on the MIDM pages. This name can be modified to a name more recognizable by MIDM users.

Search Page Configuration

Of the configurable pages, the pages that might require the most configuration are the search pages. In addition to defining the number of records to display in the search results list, you can also specify the search criteria that appear and the types of searches allowed from the MIDM.

You can define and name several search pages for each primary MIDM window, each with their own configuration. For each search page, you specify groups of fields that are displayed in boxed areas. Each boxed area can represent a different type of search, such as a demographic search, address search, EUID search, and so on. For the Records Details page searches, you must also specify the search types available for each search you define, such as alphanumeric or phonetic. You can configure searches by specifying a name for the search, the maximum number of records to return, whether the results are weighted, and whether wildcard characters can be used.

When you define the search types for the Records Details page of the MIDM, you must specify a query for each type you define. The queries you specify must already be defined in query.xml.

Implementation Configuration

The midm.xml file defines certain information about the application server for the master index implementation, such as the names of certain validation and management components, and debug parameters. Most of the implementation information is predefined.

The midm.xml File Structure

MIDM properties are defined in midm.xml. Some of the information entered into the default configuration file is based on the fields you defined in the wizard, and some is standard across all implementations. For most implementations, this file will require customization.

The following topics provide information about working with midm.xml:

Modifying midm.xml

You can modify midm.xml at any time, but you must regenerate the application and redeploy the project after making any changes to the file. Changes made to this file do not affect match processing. The possible modifications to this file are restricted by the schema definition, so be sure to validate the file after making any changes. Certain properties of this file can be modified using the Configuration Editor, such as whether a field appears on a search page and is required for that search. Most MIDM properties need to be modified directly in this file.

midm.xml File Description

The following table lists each element in midm.xml and provides a description of each element along with any requirements or constraints. Note that not all elements can be used on all predefined pages.

Table 14 midm.xml File Structure

Element/Attribute 

Description 

Object and Field Properties

node

A container element for a list of fields for one object along with their configuration information. Each object that appears on the MIDM must be defined in a node element. Most of the information you need to specify in the node elements is generated by the wizard, but you can modify the information as needed. 


Note –

All fields defined in midm.xml must also be defined in object.xml; however, not all fields defined in object.xml need to be defined for the MIDM. Any fields or objects not listed in midm.xml will not appear on the MIDM.


name 

The name of the object defined by the node. 

display-order

The order in which the child object types appear in the enterprise records on the MIDM pages. 

field

A container element defining the configuration information for a field on the MIDM. Each field that appears on the MIDM must be defined in a field element. A field element can contain the eleven configuration elements listed below. 

name 

The name of the field as it appears in the object definition file. 

display-name

The name of the field as it appears on the MIDM. 

display-order

The order in which the field appears on the MIDM. For example, specify 1 to indicate this is the first field on the MIDM pages, 2 to indicate it is the second field, and so on.

max-length

The maximum number of characters displayed on the MIDM for the field. If the field uses an input mask, make sure the length of the input mask matches the length specified here. 

gui-type

The type of display for the field. Specify one of the following options. 

  • TextBox - A standard data entry field

  • MenuList - A field that must be populated by selecting from a drop-down list

  • TextArea - A long field that requires a scrollbar, such as a comments field

value-type

The master index data type for the data populated in the field. The following data types are supported: 

  • string - Contains a string of characters.

  • date - Contains a date value.

  • float - Contains a floating point integer.

  • int - Contains an integer.

  • char - Contains a single character.

  • boolean - Contains either true or false.

input-mask

A mask used by the MIDM to add punctuation to a field. You can add an input mask to display telephone numbers as “(123)456-7890” even though the database might store them as “1234567890” and the user enters the numbers with no punctuation. The following character types are allowed:

  • D - indicates a numeric character.

  • L - indicates an alphabetic character.

  • A - indicates an alphanumeric character.

    For example, the input mask for the above telephone format is “(DDD)DDD-DDDD”.


    Note –

    If the length of the input mask is greater than the value specified for the max-length element, update the max-length property to match.


value-mask

A mask used by the master index application to strip any extra characters that were added by the input mask to ensure that data is stored in the database in the correct format. This mask must be the same length as the input mask. 

To specify a value mask, type the same value as is entered for the input mask, but type an “x” in place of each punctuation mark. For example, using the above phone number example, you need to specify a value mask of xDDDxDDDxDDDD. A value mask is not required for date fields. 

value-list

The name of the menu list used to populate the drop-down list for the field. This is required if the gui-type specified is MenuList, and it must match a code of an element in the sbyn_common_header database table.

is-sensitive

An indicator of whether the value of the field is hidden on the MIDM for records with a certain VIP status. Only users with the Administrator or Field_VIP user roles can view the hidden information. Specify true to hide the field value; specify false (or remove the is-sensitive element) to display the field value.


Note –

This element is only used if the object-sensitive-plug-in-class in the impl-details section is populated. It must precede the key-type element described below.


key-type

An indicator of whether the field (or a combination of key fields) must be unique in an enterprise record. Unique key fields identify unique child objects in an enterprise object. Specify true to indicate the field is a key field; specify false if it is not.

Relationship Properties

relationships

A container element that defines the hierarchy of the parent and child objects displayed on the MIDM. This element contains the following two elements. 

name

The name of the parent object. 

children

The name of a child object. There should be one children element for each child object defined in the previous section of the file.

Implementation Properties

impl-details

A container element that defines the configuration information for certain classes that are required for the MIDM to connect to the server. This section also defines debug and security options. 

master-controller-jndi-name

The JNDI name for the Master Controller. The default name is ejb/app-nameMasterController, where app-name is the name of the master index application.

validation-service-jndi-name

The JNDI name for the processing code validator. The default name is ejb/app-nameCodeLookup.

usercode-jndi-name

The JNDI name for the user code validator (used for non-unique IDs). The default name is ejb/app-nameUserCodeLookup.

report-generator-jndi-name

The JNDI name for the MIDM report generator. The default name is ejb/app-nameReportGenerator.

debug-flag

An indicator of whether debug information is logged. Specify true to log debug information.

debug-dest

The destination to which debug information is written. Specify console to log debug information to a monitor; specify file to print to a file.

object-sensitive-plug-in-class

The name of the class that contains logic for masking the data in certain fields from certain users. For example, certain sensitive information should only be viewed by administrators. If you specify field masking, you must define a custom plug-in to handle the process and specify it here. 

MIDM Page Properties

gui-definition

A container element that defines the configuration information for the pages that appear on the MIDM, including the types of searches available and any sub-screens contained on those pages. 

page-definition 

A container element for the configuration elements that define the individual MIDM pages. 

initial-screen-id

The screen ID of the first page to appear when you log in to the MIDM. Enter the value defined in the screen-id element of the page you want to display (described later in this table).

local-id

The name to use for all fields and columns containing local IDs. If you want to change the field label from “Local ID” to a name that is more relevant to your implementation, define that name here. In fields where the local ID label is abbreviated to “LID1” or “LID2”, the name becomes local-id1 or local-id2 (where local-id is the value specified for this element). This name is also perpetuated to heading labels on search pages.

page-name

A name that identifies the page to the MIDM. Each page is defined by a page-name element that contains all of the configuration information for the page. The name of this element is specific to the page being defined, and the allowed values for the default MIDM include the following:

  • dashboard

  • record-details

  • transactions

  • duplicate-records

  • assumed-matches

  • source-record

  • reports

  • audit-log

allow-insert

An indicator of whether entries are written to the audit log each time data is accessed on the MIDM. This element is only used when defining the Audit Log page. Specify true to enable the audit log. Specify false to disable the audit log. If the audit log is maintained, the Audit Log page is available on the MIDM for searching and viewing audit log entries and the information is stored in the sbyn_audit table.

root-object

The name of the parent object. This should not be changed. 

tab-name

A name for tabbed heading for the page. This name appears on tab labels associated with the pages on the MIDM. 

screen-id 

A unique identifier for the page. This is referenced from the initial-screen-id element to specify the initial page that appears when a user logs in to the MIDM. This value must be an integer.

display-order 

The order in which the page appears in the tabbed headings. The display order goes from left to right. 

search-pages 

A container element that lists and defines the searches that are available from the page. You can define multiple searches for each page. 

Search Page Properties

simple-search-page

A container element that defines one type of search for an MIDM page. You can define multiple simple search pages. 

screen-title

The name of the search as it appears on the search page. Users can select a type of search to perform based on the titles you define for the searches here. 

search-result-id 

The unique identifier for the search results page that appears for the search. You can define multiple search results pages for each MIDM page, and each results page has a unique ID. You can enter any of the search result ID values defined in the search-results-pages element described later in this table.

search-screen-order 

The order in which the search page appears on the MIDM. The display order goes from left to right. 

show-euid

An indicator of whether to display the EUID field in the search criteria. Specify true to display the EUID; otherwise specify false. This element is not used by all pages, and the default value is false if this element does not exist.

show-lid

An indicator of whether to display the local ID and system fields in the search criteria. Specify true to display the fields; otherwise specify false. This element is not used by all pages, and the default value is false if this element does not exist. When the local ID is displayed, the local ID and system fields appear in their own labelled box.

show-status 

An indicator of whether to display the record status field in the search results list. Specify true to display the field; otherwise specify false. This element is not used by all pages, and the default value is false if this element does not exist.

show-create-date 

An indicator of whether to display the create date field to allow searching on the date the record was created. Specify true to display the field; otherwise specify false. This element is not used by all pages, and the default value is false if this element does not exist.

show-create-time 

An indicator of whether to display the create time field to allow searching on the time the record was created. Specify true to display the field; otherwise specify false. This element is not used by all pages, and the default value is false if this element does not exist.

show-timestamp 

An indicator of whether to display the timestamp field. Specify true to display the field; otherwise specify false. This element is not used by all pages, and the default value is false if this element does not exist.

instruction

A short statement to help the user process a search. The text you enter here appears above the search fields on the Search page. 

field-group

A list of fields that appear on the Search page. You can define multiple field groups, and each group is contained in a labelled box on the Search page. Note that you can only define fields for searches on the Record Details page. 

description

A description of the fields defined for the field-group element. This value appears as a box label for the area of the page that contains the specified fields.

field-ref

One field definition for a field in the field group. Use the simple field name of the field with their corresponding objects as the root. For example, the path to the FirstName field in the Person object is “Person.FirstName”. You can define multiple field-ref elements for each field group, each of which are further configured by the following two optional attributes.

field-ref/required

An indicator of whether the field is required in order to perform a search. Specify any of the following values. 

  • true - The corresponding field is required to perform the search. These fields are marked with an asterisk (*).

  • false - The corresponding field is not required to perform the search. If the required attribute is not defined, the default is false.

  • oneof - This is assigned to more than one field and at least one of the fields with this designation is required to perform the search. If a group of fields is designated as “oneof”, those fields are marked with a dagger ( ) on the search page.

field-ref/choice

An indicator of whether you search by a range of values rather than an exact value for the field. Specify one of the following values. 

  • exact - The search is performed on the exact value entered (wildcard may be allowed). If the choice attribute is not specified, this is the default value.

  • range - The search is performed on a range of values based on the entered search criteria. Fields with this designation appear twice on the search page, once with “From” appended to the field label and once with “To” appended to the field label. Be sure any searches that use range searching in the MIDM are configured to use range searching in query.xml.

To define a field for both exact and range searching, define the field twice; once with this attribute set to exact and once with it set to range. 

search-option

A container element for the configuration information for a search. Each search-option element defines one type of search for the page. Note that not all search pages use search options.

display-name

A short phrase describing the type of search to perform, such as “Alphanumeric Search” or “Phonetic Search”. These names appear on the MIDM for users to select when specifying the type of search to perform. 

query-builder

The type of query to use when this type of search is selected. The value entered here must match a query-builder name in query.xml.

weighted

An indicator of whether the results of the search are assigned matching probability weights. Specify true to assign matching weights or false to return unweighted results.

candidate-threshold

The maximum number of records to return for a search. This value must be a positive number, and is only used for blocking queries. Setting the candidate threshold to zero is equivalent to not setting a threshold. 

parameter

A list of optional parameters for the search. Not all query builders require parameters. 

name

The name of the parameter. Currently, only UseWildCard is available.

value

The value of the parameter. For the UseWildCard parameter, this is an indicator of whether the parameter is enabled or disabled. Specify true to allow wildcard characters or false to perform exact-match searches.

Search Results List Properties

search-result-pages 

A container element for a list of search result page definitions. This allows you to have more than one search result configuration for the same MIDM page. 

search-result-list-page

A container element for the configuration information for one search results page. You can define multiple search results pages. 

search-result-id 

A unique identifier for the search result page. This element identifies the results page to display for each search type defined above. This value must be an integer. 

item-per-page

The number of resulting records to display on one page. 

max-result-size

The maximum number of records to return for a search. 

show-status 

An indicator of whether to display the record status field in the results list. Specify true to display the field; otherwise specify false. Note that you cannot configure the search results fields for all search results lists.

show-create-date 

An indicator of whether to display the create date field in the results list. Specify true to display the field; otherwise specify false.

show-create-time 

An indicator of whether to display the create time field in the results list. Specify true to display the field; otherwise specify false.

show-timestamp 

An indicator of whether to display the timestamp field in the results list. Specify true to display the field; otherwise specify false.

field-group 

A container element for one list of fields that appear in the search results. You can define multiple groups of fields. 

description 

A brief description for the field group. This value appears on the MIDM above the fields that are returned from a search. 

field-ref

A definition for one field that appears in the search results list. Use the simple field names with their corresponding objects as the root. For example, the path to the FirstName field in the Person object is “Person.FirstName”. You can define multiple field-ref elements.

Subscreen Properties

subscreen-configurations 

A list of sub-pages for a page-name element, described earlier in this table. You can define several pages within the main tabbed page. These pages appear on the page for which they are defined with their own tabbed headings beneath the main tabbed heading row.

subscreen 

A container element for a sub-page. This element uses the same sequence of elements as the main page-name element, including the following:

  • enable

  • root-object

  • tab-name

  • report-name

  • screen-id

  • display-order

  • search-pages

  • search-result-pages

The subscreen element does not include the allow-insert element, but does include two new elements, enable and report-name. The enable element contains a Boolean indicator of whether the tabbed sub-page is available. The report-name element is used for defining reports.


Note –

The subscreen element is used by default to define standard reports that can be run from the MIDM. In these subscreen definitions, the report-name element indicates the type of report being generated.

You can specify any of the following production reports:

Or you can specify any of the following activity reports.


midm.xml File Example

Below is a short excerpt from midm.xml based on a master index application processing person information. This sample defines two pages on the MIDM. The first page defines one blocking search, one simple lookup search, and one search result list. The second page is the reports page, and it defines a Potential Duplicate Report and a Weekly Activity report.


<node>
   <name>Person</name> 
   <field>
      <name>LastName</name> 
      <display-name>Last Name</display-name>
      <display-order>1</display-order>
      <max-length>40</max-length>
      <gui-type>TextBox</gui-type>
      <value-type>string</value-type>
      <key-type>true</key-type>
   </field>
   <field>
      <name>FirstName</name> 
      <display-name>First Name</display-name>
      <display-order>2</display-order>
      <max-length>40</max-length>
      <gui-type>TextBox</gui-type>
      <value-type>string</value-type>
      <key-type>true</key-type>
   </field>
   <field>
      <name>DOB</name> 
      <display-name>DOB</display-name>
      <display-order>3</display-order>
      <max-length>32</max-length>
      <gui-type>TextBox</gui-type>
      <value-type>date</value-type>
      <key-type>true</key-type>
   </field>
   <field>
      <name>Gender</name> 
      <display-name>Gender</display-name>
      <display-order>4</display-order>
      <max-length>8</max-length>
      <gui-type>MenuList</gui-type>
      <value-list>GENDER</value-list>
      <value-type>string</value-type>
      <key-type>true</key-type>
   </field>
   <field>
      <name>SSN</name> 
      <display-name>SSN</display-name>
      <display-order>5</display-order>
      <max-length>16</max-length>
      <gui-type>TextBox</gui-type>
      <value-type>string</value-type>
      <input-mask>DDD-DD-DDDD</input-mask>
      <value-mask>DDDxDDxDDDD</value-mask>
      <is-sensitive>true</is-sensitive>
   <field>
</node>
<node>
   <name>Alias</name>
   <display-order>1</display-order>
   <field>
      <name>LastName</name> 
      <display-name>LastName</display-name>
      <display-order>1</display-order>
      <max-length>40</max-length>
      <gui-type>TextBox</gui-type>
      <value-type>string</value-type>
      <key-type>true</key-type>
   </field>
   <field>
      <name>FirstName</name> 
      <display-name>FirstName</display-name>
      <display-order>2</display-order>
      <max-length>40</max-length>
      <gui-type>TextBox</gui-type>
      <value-type>string</value-type>
      <key-type>true</key-type>
   </field>
</node>
<relationships>
   <name>Person</name>
   <children>Alias</children>
</relationships>
<impl-details>
   <master-controller-jndi-name>ejb/PersonMasterController
   </master-controller-jndi-name>
   <validation-service-jndi-name>ejb/PersonCodeLookup
   </validation-service-jndi-name>
   <usercode-jndi-name>ejb/PersonUserCodeLookup</usercode-jndi-name>
   <reportgenerator-jndi-name>ejb/PersonReportGenerator
   </reportgenerator-jndi-name>
   <debug-flag>true</debug-flag>
   <debug-dest>console</debug-dest>
   <enable-security>true</enable-security>
   <object-sensitive-plug-in-class>com.sun.mdm.index.security.VIPPlugIn
   </object-sensitive-plug-in-class>
</impl-details>
<gui-definition>
   <page-definition>
      <local-id/>
      <initial-screen-id>1</initial-screen-id>
      <record-details>
         <root-object>Person</root-object>
         <tab-name>Record Details</tab-name>
         <screen-id>1</screen-id>
         <display-order>2</display-order>
         <search-pages>
            <simple-search-page>
               <screen-title>Advanced Person Lookup (Phonetic)</screen-title>
               <search-result-id>1</search-result-id>
               <search-screen-order>1</search-screen-order>
               <show-euid>false</show-euid>
               <show-lid>false</show-lid>
               <instruction/>
               <field-group>
                  <description>Person</description>
                  <field-ref required="false">Person.FirstName</field-ref>
                  <field-ref required="false">Person.LastName</field-ref>
                  <field-ref required="false">Person.SSN</field-ref>
               </field-group>
               <field-group>
                  <description>Alias</description>
                  <field-ref required="false">Person.Alias.FirstName</field-ref>
                  <field-ref required="false">Person.Alias.LastName</field-ref>
               </field-group>
               <search-option>
                  <display-name>Phonetic Search</display-name>
                  <query-builder>BLOCKER-SEARCH</query-builder>
                  <weighted>true</weighted>
                  <parameter>
                     <name>UseWildcard</name>
                     <value>false</value>
                  </parameter>
               </search-option>
            </simple-search-page>
            <simple-search-page>
               <screen-title>Simple Person Lookup</screen-title>
               <search-result-id>1</search-result-id>
               <search-screen-order>2</search-screen-order>
               <show-euid>true</show-euid>
               <show-lid>true</show-lid>
               <instruction/>
               <field-group/>
               <search-option>
                  <display-name>Alpha Search</display-name>
                  <query-builder>ALPHA-SEARCH</query-builder>
                  <weighted>false</weighted>
                  <parameter>
                     <name>UseWildcard</name>
                     <value>true</value>
                  </parameter>
               </search-option>
            </simple-search-page>
         </search-pages>
         <search-result-pages>
            <search-result-list-page>
               <search-result-id>1</search-result-id>
               <item-per-page>10</item-per-page>
               <max-result-size>100</max-result-size>
               <field-group>
                  <description/>
                  <field-ref>Person.FirstName</field-ref>
                  <field-ref>Person.MiddleName</field-ref>
                  <field-ref>Person.LastName</field-ref>
                  <field-ref>Person.SSN</field-ref>
                  <field-ref>Person.DOB</field-ref>
                  <field-ref>Person.Gender</field-ref>
               </field-group>
            </search-result-list-page>
         </search-result-pages>
      </record-details>
      <reports>
         <root-object>Person</root-object>
         <tab-name>Reports</tab-name>
         <screen-id>6</screen-id>
         <display-order>5</display-order>
         <search-pages/>
         <search-result-pages/>
         <subscreen-configurations>
            <subscreen>
               <enable>true</enable>
               <root-object>Person</root-object>
               <tab-name>Potential Duplicate Report</tab-name>
               <report-name>Potential Duplicate</report-name>
               <screen-id>0</screen-id>
               <display-order>1</display-order>
               <search-pages/>
               <search-result-pages>
                  <search-result-list-page>
                     <search-result-id>0</search-result-id>
                     <item-per-page>10</item-per-page>
                     <max-result-size>2000</max-result-size>
                     <field-group>
                        <description/>
                        <field-ref>Person.FirstName</field-ref>
                        <field-ref>Person.LastName</field-ref>
                        <field-ref>Person.SSN</field-ref>
                        <field-ref>Person.DOB</field-ref>
                        <field-ref>Person.Gender</field-ref>
                     </field-group>
                  </search-result-list-page>
               </search-result-pages>
            </subscreen>
            <subscreen>
               <enable>true</enable>
               <root-object>Person</root-object>
               <tab-name>Activity Report</tab-name>
               <report-name>Transaction Summary Report</report-name>
               <screen-id>2</screen-id>
               <display-order>2</display-order>
               <search-pages>
                  <simple-search-page>
                     <screen-title>Weekly Activity</screen-title>
                     <report-name>Weekly Transaction Summary Report</report-name>
                     <search-result-id>0</search-result-id>
                     <search-screen-order>1</search-screen-order>
                     <field-group/>
                  </simple-search-page>
                  <search-result-pages>
                     <search-result-list-page>
                        <search-result-id>0</search-result-id>
                        <item-per-page>10</item-per-page>
                        <max-result-size>2000</max-result-size>
                        <field-group/>
                     </search-result-list-page>
                  </search-result-pages>
               </subscreen>
       </page-definition>
   </gui-definition>