Understanding Sun Master Index Configuration Options (Repository)

The Best Record File (Repository)

The properties for the update process are defined in the Best Record file in XML format. Some of the information entered into the default configuration file is based on the fields 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 the Best Record file:

Modifying the Best Record File

You can customize the configuration of the Update Manager by modifying the Best Record file. This file cannot be modified using the Configuration Editor; you need to modify the file directly. You can modify this file at any time, but it is not recommended after moving into production. The configuration controls how the SBR for each object is created, and modifying the file can cause discrepancies in how SBRs are formed before and after the modifications. It might also cause discrepancies in match results, since matching is performed against the SBR. You must regenerate the application and redeploy the project after modifying this file. The possible modifications to this file are restricted by the schema definition, so be sure to validate the file after making any changes.

Best Record File Description

Table 12 lists each element in the Best Record file and provides a description of each element along with any requirements or constraints for each element.

Table 12 Best Record File Structure

Element/Attribute 

Description 

SurvivorHelperConfig

The configuration of the overall survivor strategy. The SurvivorHelperConfig attributes (module-name and parser-class) define the module name and Java class, and their default values should not be changed.

helper-class

The Java class that determines how to retrieve values from system records and to set them in the SBR. The default class uses the ePath notation to retrieve and set the values. 

default-survivor-strategy

The configuration information for the survivor strategy to use as the default. You can define multiple survivor strategies and use different strategy combinations for the candidate fields. Any field that is not assigned a specific survivor strategy in the candidate-definitions list uses the default survivor strategy specified here.

strategy-class

The Java class name of the default strategy. 

parameters

A list of optional parameters for the default survivor strategy. 

parameter

A parameter for the default survivor strategy. The default parameter points to another section in the Best Record file that configures the default class. There can be multiple parameter elements.

description

An optional element that briefly describes the parameter. 

parameter-name

The name of the parameter. 

  • For the DefaultSurvivorStrategy, this value is preferredSystem.

  • For the WeightedSurvivorStrategy, this value is ConfigurationModuleName.

  • For the UnionSurvivorStrategy. this is not used.

parameter-type

The Java data type for the parameter value. For both the DefaultSurvivorStrategy and the WeightedSurvivorStrategy, this value is java.lang.String.

parameter-value

The value of the named parameter. 

  • For the DefaultSurvivorStrategy, this is the processing code of the source system from which the SBR field value is retrieved.

  • For the WeightedSurvivorStrategy, this is the name of the module-name element that defines the weighted calculator to use as the default strategy (by default, WeightedSurvivorCalculator).

candidate-definitions

The configuration information for the fields to be included in the SBR. For any field that does not use the default survivor strategy, an alternate strategy is defined. All field that are included in the SBR must be listed here. 

candidate-field/name

The qualified field name for a field in the SBR (for more information about field notations, see Master Index Field Notations).

description

A short description of the candidate field (this element is optional). 

system-fields

A field (other than the candidate field) that is evaluated to determine the value for the SBR. One example of this would be to evaluate the last update date of the system records to determine which value is most recent. This element is not currently used by any of the standard survivor strategies provided with the master index application, but might be useful when defining custom strategies. 

field-name

The name of the field to use to determine the value for the SBR. 

survivor-strategy

An alternate survivor strategy to use for the given field in place of the default strategy defined in the default-survivor-strategy element. If a strategy is not specifically defined for a field, the default strategy is used for that field.

strategy-class

The name of the Java class to use for the alternate survivor strategy. 

WeightedCalculator

The configuration of the weighted calculator. By default, this is the strategy specified as the default strategy in the default-survivor-strategy element. The WeightedCalculator attributes (module-name and parser-class) define the module name and Java class, and their default values should not be changed unless you create a custom class.

default-parameters

The configuration information for the default weighted calculator logic for all fields except those whose logic is defined in the candidate-field element below.

parameter

A parameter for the default logic of the weighted calculator. 

quality

The type of weighted calculation to perform. You can specify any of the following: 

  • SourceSystem

  • SystemAgreement

  • MostRecentModified

For more information about these qualities, see Weighted Calculator.

preference

The preferred value for the specified quality. This element is only used for the SourceSystem quality and must be a source system code.

utility

A value that indicates the reliability of the specified quality for determining the best field value for the SBR. You define the scale for the utility values. 

candidate-field

A field for which you want to use custom logic for the weighted calculator. The logic you specify here overrides the logic defined in the default-parameters section, but only for the fields specified. Each candidate field is identified by a name attribute and defines the survivor strategies for one field.

candidate-field/name

The name of the candidate field for which you want to define override logic. 

parameter

A parameter configuring the weighted calculator for the candidate field. You can define multiple parameters for each candidate field. 

quality

The type of weighted calculation to perform. You can specify any of the following: 

  • SourceSystem

  • SystemAgreement

  • MostRecentModified

    For more information about these qualities, see Weighted Calculator.

preference

The preferred value for the specified quality. This element is only used for the SourceSystem quality and the preference must be a source system code.

utility

A value that indicates the reliability of the specified quality for determining the best field value for the SBR. You define the scale for the utility values. 

UpdateManagerConfig

The configuration information for the Update Manager. This section defines a list of Java classes to manage custom processing for different types of transactions. You can create the custom classes in the Custom Plug-ins function of the master index project and then specify those classes here. The UpdateManagerConfig attributes (module-name and parser-class) define the module name and Java class, and their default values should not be changed.

EnterpriseMergePolicy

A class that defines additional processing to perform when two enterprise objects are merged. 

EnterpriseUnmergePolicy

A class that defines additional processing to perform when two enterprise objects are unmerged. 

EnterpriseUpdatePolicy

A class that defines additional processing to perform when a record is updated. 

EnterpriseCreatePolicy

A class that defines additional processing to perform when a new record is created. 

SystemMergePolicy

A class that defines additional processing to perform when two system objects are merged. 

SystemUnmergePolicy

A class that defines additional processing to perform when system objects are unmerged. 

UndoAssumeMatchPolicy

A class that defines additional processing to perform when an assumed match transaction is reversed. 

SkipUpdateIfNoChange

An indicator of whether the update policies are carried out if no changes are made to the existing record. Specify “true” to prevent the update policies from being performed when no changes are made to an existing record. 

Best Record File Example

Below is a sample of the Best Record file using a very small object structure based on person data. Note that standardized and phonetic fields are included in the candidate fields to ensure that they are also included in the SBR. In this sample, all fields use the default strategy except those included in the Alias object, which uses the union strategy. The value that is populated in the LastName field of the SBR is dependent on the SSN field of the system objects. In addition, custom logic is defined only for the SSN field; the remaining fields use the default logic defined in the default-parameters element.


<SurvivorHelperConfig module-name="SurvivorHelper" 
 parser-class="com.stc.eindex.configurator.impl.SurvivorHelperConfig">
   <helper-class>com.stc.eindex.survivor.impl.DefaultSurvivorHelper
   </helper-class>
   <default-survivor-strategy>
      <strategy-class>
       com.stc.eindex.survivor.impl.WeightedSurvivorStrategy
      </strategy-class>
      <parameters>
         <parameter>
            <parameter-name>ConfigurationModuleName</parameter-name>
            <parameter-type>java.lang.String</parameter-type>
            <parameter-value>WeightedSurvivorCalculator
            </parameter-value>
         </parameter>
      </parameters>
   </default-survivor-strategy>
   <candidate-definitions>
      <candidate-field name="Person.LastName">
         <system-fields>
            <field-name>Person.SSN</field-name>
         </system-fields>
      </candidate-field>
      <candidate-field name="Person.FirstName"/>
      <candidate-field name="Person.MiddleName"/>
      <candidate-field name="Person.DOB"/>
      <candidate-field name="Person.Gender"/>
      <candidate-field name="Person.SSN"/>
      <candidate-field name="Person.FnamePhoneticCode"/>
      <candidate-field name="Person.LnamePhoneticCode"/>
      <candidate-field name="Person.StdFirstName"/>
      <candidate-field name="Person.StdLastName"/>
      <candidate-field name="Person.Alias[*].*">
         <survivor-strategy>
            <strategy-class>
             com.stc.eindex.survivor.impl.UnionSurvivorStrategy
            </strategy-class>
         </survivor-strategy>
      </candidate-field>
   </candidate-definitions>
</SurvivorHelperConfig>
<WeightedCalculator module-name="WeightedSurvivorCalculator"
 parser-class="com.stc.eindex.configurator.impl.WeightedCalculatorConfig">
   <candidate-field name="Person.SSN">
      <parameter>
         <quality>SourceSystem</quality>
         <preference>SBYN</preference>
         <utility>100.0</utility>
      </parameter>
      <parameter>
         <quality>MostRecentModified</quality>
         <utility>75.0</utility>
      </parameter>
   </candidate-field>
   <default-parameters>
      <parameter>
         <quality>MostRecentModified</quality>
         <utility>80.0</utility>
      </parameter>
      <parameter>
         <quality>SourceSystem</quality>
         <preference>SBYN</preference>
         <utility>100.0</utility>
      </parameter>
   </default-parameters>
</WeightedCalculator>
<UpdateManagerConfig module-name="UpdateManager" 
 parser-class="com.stc.eindex.configurator.impl.UpdateManagerConfig">
   <EnterpriseMergePolicy>com.stc.eindex.user.CustomMergePolicy
   </EnterpriseMergePolicy>
   <EnterpriseUnmergePolicy>com.stc.eindex.user.CustomUnmergePolicy
   </EnterpriseUnmergePolicy>
   <EnterpriseUpdatePolicy>com.stc.eindex.user.CustomUpdatePolicy
   </EnterpriseUpdatePolicy>
   <EnterpriseCreatePolicy>com.stc.eindex.user.CustomCreatePolicy
   </EnterpriseCreatePolicy>
   <SystemMergePolicy>com.stc.eindex.user.CustomSystemMergePolicy
   </SystemMergePolicy>
   <SystemUnmergePolicy>com.stc.eindex.user.CustomSystemUnmergePolicy
   </SystemUnmergePolicy>
   <UndoAssumeMatchPolicy>com.stc.eindex.user.CustomUndoMatchPolicy
   </UndoAssumeMatchPolicy>
   <SkipUpdateIfNoChange>true</SkipUpdateIfNoChange>
</UpdateManagerConfig>

Weighted Calculator Logic

The following sample illustrates how the weighted calculator uses the parameters you define to determine which field values to use in the SBR. Using this sample, if there is a value in only one of the system records but not in the other, that value is used in the SBR regardless of update date. If there is a value in both system records and they were updated at the same time, the SAP field value is used (80.0>30.0). If there is a value in both system records, but CDW was the most recently modified, the value from CDW is populated into the SBR ((30.0+70.0)>80.0)


<default-parameters>
   <parameter>
      <quality>SourceSystem</quality>
      <preference>SAP</preference>
      <utility>80.0</utility>
   </parameter>
   <parameter>
      <quality>MostRecentModified</quality>
      <utility>70.0</utility>
   </parameter>
   <parameter>
      <quality>SourceSystem</quality>
      <preference>CDW</preference>
      <utility>30.0</utility>
   </parameter>
</default-parameters>