Professional Documents
Culture Documents
3)
Operations Guide
Table of Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
Learning About Informatica MDM Registry. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
What Do I Read If. . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Resources. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica My Support Portal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii
Informatica Documentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Informatica Web Site. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Informatica How-To Library. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Informatica Knowledge Base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Informatica Support YouTube Channel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Informatica Marketplace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
Informatica Velocity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Informatica Global Customer Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Chapter 1: Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Rulebase and Database Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Database Object Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Error Logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Utility Locking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Chapter 2: Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Starting the MDM-RE Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Default Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Search / Rulebase Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Connection Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Console Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Stopping. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Restarting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Server Statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Rulebase Server Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Environment Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Windows Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Table of Contents
ii
Table of Contents
updsync utility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
updmulti utility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Restarting Automatically. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Synchronization Level. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Transaction File / Table. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Integrity Checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Timing Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Chapter 7: Globalization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Character Sets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Database Support for UNICODE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Binary Mode Utilities. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Loading IDTs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
MDM-RE Clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Relate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Java Search Client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Synchronizer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
SSA-NAME3 V2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Debugging a Search. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Miscellaneous Tips. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Table of Contents
iii
iv
Table of Contents
Table of Contents
Preface
The MDM-RE Operations Guide provides information about the operation of the run-time components of MDM
Registry Edition, such as servers, search clients and other utilties.
Introduction Guide
Introduces MDM Registry product and it's related terminology. It may be read by anyone with no prior knowledge of the
product who requires a general overview of MDM Registry.
Installation Guide
This manual is intended to be the first technical material a new user reads before installing the MDM Registry
software, regardless of the platform or environment.
Design Guide
This is a guide that describes the steps needed to design, define and load an MDM Registry "System".
Developer Guide
This manual describes how to develop a custom search client application using the MDM - Registry Edition API.
Operations Guide
This manual describes the operation of the run-time components of MDM - Registry Edition, such as servers, search
clients and other utilties.
vi
Release Notes
The Release Notes contain information about whats new in this version of MDM - Registry Edition. It is also
summarizes any documentation updates as they are published.
I am. . .
. . . installing the product?
Before attempting to install MDM-RE, you should read the INSTALLATION GUIDE to learn about the prerequisites
and to help you plan the installation and implementation of the MDM-Registry Edition.
I am. . .
...an Analyst or Application Programmer?
A high-level overview is provided specifically for Application Programmers in the INTRODUCTION to MDM Registry
Edition.
When designing and developing the application programs, refer to the DEVELOPER GUIDE which describes a typical
application process flow and API parameters. Working example programs that illustrate the calls to MDM-RE in
various languages are available under the <MDM-RE_client_installation>/samples directory.
I am. . .
...designing and administering Systems?
The process of designing, defining and creating Systems is described in the DESIGN GUIDE. Administering the
servers and utilities is described in the OPERATIONS manual.
Informatica Resources
Informatica My Support Portal
As an Informatica customer, you can access the Informatica My Support Portal at http://mysupport.informatica.com.
Preface
vii
The site contains product information, user group information, newsletters, access to the Informatica customer
support case management system (ATLAS), the Informatica How-To Library, the Informatica Knowledge Base,
Informatica Product Documentation, and access to the Informatica user community.
Informatica Documentation
The Informatica Documentation team takes every effort to create accurate, usable documentation. If you have
questions, comments, or ideas about this documentation, contact the Informatica Documentation team through email
at infa_documentation@informatica.com. We will use your feedback to improve our documentation. Let us know if we
can contact you regarding your comments.
The Documentation team updates documentation as needed. To get the latest documentation for your product,
navigate to Product Documentation from http://mysupport.informatica.com.
Informatica Marketplace
The Informatica Marketplace is a forum where developers and partners can share solutions that augment, extend, or
enhance data integration implementations. By leveraging any of the hundreds of solutions available on the
Marketplace, you can improve your productivity and speed up time to implementation on your projects. You can
access Informatica Marketplace at http://www.informaticamarketplace.com.
viii
Preface
Informatica Velocity
You can access Informatica Velocity at http://mysupport.informatica.com. Developed from the real-world experience
of hundreds of data management projects, Informatica Velocity represents the collective knowledge of our
consultants who have worked with organizations from around the world to plan, develop, deploy, and maintain
successful data management solutions. If you have questions, comments, or ideas about Informatica Velocity,
contact Informatica Professional Services at ips@informatica.com.
Preface
ix
CHAPTER 1
Introduction
This chapter includes the following topics:
Overview, 1
Conventions, 1
Overview
This manual describes the operation of the run-time components of Informatica MDM Registry Edition.
The components covered are:
Console Server and Client
Search Server and Connection Server
Update Synchronizer
Online Rulebase Search Client and Applet
Batch Rulebase Search Client (Relate and DupFinder)
Batch Utilities
Debugging facilities
The Rulebase editor is covered in the Application and Database Design guide.
Conventions
This section describes the naming conventions used by MDM-RE to manage database objects.
Interface:Interface_specific
Interface identifies the database interface to be used to access the DBMS. The valid values are:
odb Specifies the ODBC interface. Supported target database types are Oracle, UDB/DB2 and Microsoft SQL
Server. Any other ODBC data sources may be used for unsynchronized source access.
ssa Dictionary Alias (see below).
Chapter 1: Introduction
Create a text file that contains the alias names followed by their actual connection string, separated with tabs or
spaces. For example:
rb odb:0:ssa/ssa@ssa19817
db odb:1:ssa/ssa@ssa19817
src odb:99:ssa/ssa@ssa5510g
2.
Define an environment variable in the Servers environment so that it can find the Dictionary File. For example, on
Windows:
set SSA_DBDICT=%SSAWORKDIR%\mydict.dic
Or on Unix:
SSA_DBDICT=$SSAWORKDIR/mydict.dic
export SSA_DBDICT
If this variable is not defined, it will default to $SSABIN/dbdict.dic.
3.
Use the alias names instead of actual connection string. The Interface must be set to ssa to enable this alias
look-up feature. For example, use ids:rb to refer to the Rulebase, ids:db to refer to the Database and ids:src to
refer to the Source.
2.
3.
4.
5.
Conventions
Type (odb):
System Qualifier: 1
Userid (ssa):
Password:
Re-enter password:
Service: dbserver
Connection string is odb:1:ssa/@dbserver
(p=Proceed r=Re-enter d=Discard): p
iirdict> alias rb tested successfully
iirdict> alias rb added successfully
Refer to the Database Object Names section for the meaning of these fields.
Note: At no time is any password ever echoed to the screen.
When an alias is entered, the MDM-RE iirdict utility will attempt to validate the connection, as above. The alias
will be added regardless of any connection errors, which may be caused by an external problem such as an
incorrect ODBC or database configuration.
If you need to change the connection, in order to change the password, for example, then you must delete the
connection and add it again. The MDM-RE iirdict utility does not allow the file to contain two aliases with the
same name.
The list command provides a log of changes made to the encrypted dictionary.
Command (a=Add d=Delete l=List t=Test q=Quit)? l
# Tue Feb 9 23:22:07 2010 ssa Created
# Wed Feb 10 00:09:29 2010 ssa Added alias rb
In this example, ssa is the name of the MDM-RE Administrator.
You can still define the environment variable SSA_DBDICT in the servers environment, as in the previous
section. It will default to $SSABIN/dbdict.dic.
Control Objects
The following objects are created on the MDM-RE Database (target database) to provide control information:
IDS_FDT_META
Table
IDS_FDT_META_DBID_I
Index
IDS_FDT_META_ID_I
Index
IDS_FDT_META_NAME_I
Index
IDS_FDT_META_NMIDDB_I
Index
IDS_FDT_RECID
Table
IDS_FDT_RECID_NO_I
Index
IDS_RB_GROUPS
Table
IDS_RB_GROUPS_I
Index
IDS_2PC
Table
Chapter 1: Introduction
IDS_UPD_SYNC_NSA
Table
IDS_UPD_SYNC_NSA_I
Index
Table
ID Table
IDS_nn_IDLName
Table
Link Table
IDS_nn_IDTName_I[1..n]
Index
IDSX_nn_IDXName
Table
IDX Table
IDSX_nn_IDXName_I
Index
IDX Index
where
nn is the System_Qualifier specified by %SSA_DBNAME%.
IDTName is the value of the NAME= parameter from the IDT-Definition.
IDLName is the value of the IDL-NAME= parameter from the Multi-Search-Definition.
IDXName is the value of the ID= parameter from the IDX-Definition.
RuleBase Objects
IDS_nn_INUSE
IDS_nn_SSARBN
Table - Data
IDS_nn_RECOVERY
Table - Restart/Recovery
IDSX_nn_SSARBN
Index
where
nn is the System_Qualifier specified by %SSA_RBNAME%.
Synchronizer Objects
The Update Synchronizer is supported by various objects which are created by the SQL scripts updsyncu.sql and
updsynci.sql. These objects are created in the source database (containing User Source Tables).
IDS_UPD_SYNC_TXN
Table
IDS_UPD_SYNC_TXN_I
Index
IDS_UPDATE_SYNC_SEQ
Sequence
Conventions
IDS_UPDATE_SYNC
Package
IDS_UPDATE_SYNC
Package Body
IDS nnnnn
Triggers
The System Loader will create triggers on the USTs if the SYNC option was specified. All triggers use the following
naming convention:
IDS fixed prefix
nnnnn unique identifier (base 36 number)
Error Logs
MDM-RE error logs may be output by various utilities and/or returned in response to an ids_error_get API call.
This is a sample Error Log created by the Table Loader:
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
#1
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
ErrorLog: [
get memory
ErrorLog: [
ErrorLog: [
1.773
1.773
1.543
1.493
1.442
1.392
1.342
1.292
1.242
1.192
1.142
1.092
1.022
0.972
0.922
0.872
0.822
0.581
0.531
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
2]
0.481
0.431
0.361
0.311
0.201
0.151
2]
2]
2]
2]
2]
2]
Chapter 1: Introduction
We can infer that an error occurred in a sort routine. Continue up the stack in order of increasing timestamp looking for
a text message. The messages containing module names and line numbers can be ignored. They simply give context
information (a stack trace) of who called the function that reported the error.
The first text message is as follows:
ErrorLog:[0.151 2] ssadb6_ssaxld_init failed: SSAST Could not get memory
This message indicates that the sort routine failed when attempting to allocate some memory. In response to this you
could add some RAM and/or increase the available swap space, or decrease the amount of memory required by the
Table Loader by adjusting its parameters.
You could continue up the stack looking for more information. However, the first message is the important one. The
other messages may report consequential errors, and are of less interest.
Some Error Logs will contain two error stacks. This typically occurs when two communicating processes fail. For
example, when a search client (say relate) calls the Search Server which subsequently reports an error, both
processes will report their Error Logs.
Utility Locking
Some utilities require exclusive use of certain MDM-RE system resources. These include the:
Table Loader
Update Synchronizer
Refresh / Delete utility
When the utility starts it will acquire application level locks within the Rulebase for the appropriate resources. Other
processes that require the same locks will not be allowed to run.
For example, locks are used to prevent two Update Synchronizers from updating the same IDT and IDXs
concurrently.
The lockmgr utility (documented in the Batch Utilities chapter) is used to list and delete locks in the situation when a
utility terminates abnormally while holding locks. In most situations MDM-RE is able to determine that the utility has
crashed to unlock the resources automatically. The lockmgr utility can be used to manually unlock resources in the
rare circumstances when automatic unlock is not possible.
System Name
Select a system from the list of available systems in the current Rulebase, to view the list of job names belonging
to the system.
Job Name
Select a job name from the list of available jobs in the selected system, to view the run information.
System Logs
Check this option to see the System dependant logs.
Global Logs
Check this option to see the System independent logs.
Run-Information
The user is presented with a run information list of the selected system job. The user can at this time make a
selection to view the relative step information.
Step Logs
The user is presented with a list of steps belonging to the selected job. The user can now view the run logs, error
logs, output files (if any) of each step by selecting the desired option.
Conventions
CHAPTER 2
Servers
This chapter includes the following topics:
Concepts, 8
Configuration, 10
Starting the MDM-RE Server, 11
Stopping, 16
Restarting, 17
Server Statistics, 18
Rulebase Server Groups, 19
Environment Variables, 23
Windows Services, 23
Concepts
The following sections provide an overview of the concepts that are relevant to MDM Registry Edition.
Search Server
The MDM Registry Edition supports multiuser search and matching facilities by using the data stored in the MDM-RE
Tables. Search clients access the Search Server using an Application Program Interface (API).
The MDM Registry Edition Search Server is a multithreaded application, with one thread allocated to each client
connection. Each Search Server process supports a limited number of connections, which are database and
environment dependent. Multiple Search Server processes can be started to handle as many concurrent Search
Clients as required.
Clients communicate with the server by using TCP/IP sockets. Ideally, the server is started on the same machine as
the DBMS to avoid excessive network overhead when it communicates with the database.
The Search Server by default uses all available CPUs to provide the fastest possible matching. See Switches to see
how to control how many match threads to use.
The Search Server maintains a pool of previously run search requests. The Search Server loads each search request
into memory and initializes it. The Search Server uses the ids_search_start function to initialize a search request.
When an ids_search_start function fails because of an transient error, the Search Server retries up to five times. The
function does not retry when it returns a fatal error. If the function fails after five times, it returns a fatal error.
When the search request is complete, the Search Server adds the search request to the pool of search requests. The
Search Server reuses these search requests, instead of reinitializing them whenever a client switches to another
search. This method reduces overhead such as reading metadata and establishing database connections and
improves the search performance.
By default, session pooling is enabled. You can disable it by setting the SSA_SESSION_POOL_MAX environment
variable to 0 on the machine hosting the Search Server.
Rulebase Server
The MDM Registry Edition Rulebase Server supports multiuser access to the rules stored in the Rulebase. Search
clients do not directly access this server. The Search Server, Console Server, and MDM-RE utilities access the
Rulebase Server.
The Rulebase Server caches rules read from the Rulebase to speed up access. One Rulebase server is permitted for
each Rulebase (to maintain cache consistency). A single Rulebase Server can serve multiple clients and multiple
Rulebases.
Connection Server
The MDM Registry Edition Connection Server is an optional server process. It is used to improve the performance of
search clients that continually connect and disconnect from the Search Server.
Stateless transaction based searches, such as Web searches would benefit from using the Connection Server. For
example, a Perl search client launched by a Web CGI-script might start a search, collect the results and terminate.
Each search transaction opens a connection to the Search Server (and database) and closes it. This is inefficient.
To overcome this problem, use MDM Registry Edition to provide a Connection Server. When a transient search client
connects to the Connection Server, the server allocates a Session-Id.
The Connection Server passes the request to the Search Server. The Connection Server returns the results to the
search client without closing the connection to the Search Server. When the search client makes a second or
subsequent call identified by the same Session-Id, the Connection Server reuses the connection established on the
first call. It avoids the overhead of reconnecting with the Search Server. The connection is closed when the search
client requests to terminate the session, or the session remain unused for the Connection Servers time-out period.
The client and Connection Server must reside on the same machine. It ensures that opening a (socket) connection
from the client to the Connection Server is inexpensive (relative to connecting to a remote machine). If the client and
Search Server use different character sets (example: EBCDIC/ASCII), the Connection Server must run on the same
machine as the client. It is because the Connection Server does not perform any character set translations.
Console Server
The MDM Registry Edition Console Client accesses the MDM Registry Edition Console Server. Use the server to
provide support facilities for the Console Client, such as RuleBase access, file access, and launching MDM Registry
Edition utilities.
Concepts
The NSA-Batch Service which integrates MDM Registry Edition with a Siebel CRM application using the MDM
Registry Edition Siebel Connector. The Synchronization Server accepts XML messages from the Siebel
Connector and stores them in the NSA Transaction Table.
License Server
The License Server monitors a directory containing license files. These files define the products and optional
components that might be installed and run in your environment. For information about the License Server, see the
Installation Guide.
Configuration
The following section discusses how to decide which servers are required and how to configure them. Server
configuration and placement is important as it affects performance.
The Search and Rulebase Servers are packaged together in one executable image called ssasrsv. Based on start up
parameters, ssasrsv will act as either a
Search Server, or
Rulebase Server, or
Search and Rulebase Servers
All clients communicate with the servers using a socket interface over TCP/IP. Communication costs vary based on
where the client and server are placed. In order of most expensive to least expensive, they are:
remote machines
same machine
same executable process
Clients on remote machines incur the cost of network transmission. Clients on the same machine will take a shortcut
through the TCP/IP protocol stack and avoid the transmission costs. A combined Search and Rulebase server takes
this one step further by bypassing TCP/IP altogether. Therefore it is advantageous to run a combined Search/
Rulebase Server. If more Search Servers are required, they can be started as standalone Search Servers configured
to access the Rulebase in the combined server.
Before launching the servers you must decide:
which servers are required
how many Search Servers are required
which machines the servers will run on
The Console Server is required if you want to use the Console Client to administer MDM Registry Edition. A
Connection Server is recommended for stateless search clients. At least, one search Server is required. In general,
one Rulebase Server must be started.
10
Chapter 2: Servers
SSA_SESSION_POOL_MAX
The maximum number of search requests that the Search Server can retain in the pool of search requests. The
configuration does not impact the maximum number of search requests that the Search Server can run
simultaneously. After the Search Server completes the search requests, it retains the maximum number of
search requests that you had set in the pool.
By default, the Search Server retains all the search requests in the pool. You can disable the session pooling
method by setting the SSA_SESSION_POOL_MAX variable to 0. Disabling the session pooling method results in
the creation and destruction of the search-related resources based on the demand.
SSA_SESSION_POOL_TIMEOUT
The time period for a search request to remain unused in the pool of search requests. After the specified time
period, the Search Server releases the unused searches from the pool, which frees the server resources and
closes the database connections. You can specify the time period in seconds (s), minutes (m), or hours (h).
The default value is 600 seconds (10 minutes), and the default unit is seconds. For example, if you set the value
as SSA_SESSION_POOL_TIMEOUT=3600 or SSA_SESSION_POOL_TIMEOUT=1h, the Search Server
releases the unused search requests from the pool after one hour.
SSA_SESSION_POOL_HEARTBEAT
The frequency to run the periodic task that releases the unused search requests. You can specify the time period
in seconds (s), minutes (m), or hours (h). The default value is 60 seconds, and the default unit is seconds.
Default Configuration
This section provides steps on how to start the MDM-RE Servers.
11
To start MDM-RE Servers in the default configuration, click the Start Server icon in the Informatica program
group (Win32), or run the shell script $SSABIN/idsup (UNIX platforms).
The default configuration starts a Console, Connection and combined Rulebase/Search Server. This
configuration is suitable for most users. Errors encountered during startup are recorded in the server
installations iirlog directory.
Note: For Win32: The Start Server icon runs a script in the server installations bin directory called idsup.bat.
For UNIX: Some platforms require the use of nohup when launching servers. Example, nohup $SSABIN/idsup &
Custom Configuration
If you wish to run servers in a custom configuration (such a multiple Search Servers or with Rulebase Server Groups)
you will need to write your own scripts to start and stop servers. The following section describes the parameters
required to start individual servers.
Configure Mode (Install tests)
MDM-RE Servers can be started in a special mode known as Configure Mode. This mode is used to start servers in the
default configuration and run the standard installation test. When servers are started in this mode the first Console
Client to connect to the server will automatically run the install test. Once the test has completed successfully the
servers will automatically switch out of Configure Mode and behave as normal servers.
For Win32: Servers will be started automatically in Configure Mode by the installation process if you check the Run
Tests checkbox. If the option is not selected during the installation phase they may be started later using the Start
Server (Configure Mode) icon in the Informatica program group.
UNIX: Refer to the Post Installation Steps\ Regression Test \ UNIX section of the Installation Guide for instructions on
how to start the Servers in Configure Mode.
Host Names / IP Addresses
MDM-RE Server start-up parameters usually include a host name. Although not explicitly noted in the following
parameter descriptions, an IP address may be substituted for a host name.
Sample Server Start-up and Shutdown Scripts
The Windows MDM-RE Server installation contains two sample scripts, idsseup.bat and idssedn.bat, that can be used
to start Server processes in various configurations.
Note: These scripts do not support Rulebase Server Groups.
To use these scripts, you need to set the following environment variables:
SSA_SESV_RBPORT
Set to the port number that the Rulebase Server will be listening on. Set to 0 (zero) to prevent the Rulebase
Server process from starting/stopping. In this case a separate Rulebase Server process must be running and the
environment variable SSA_SESV_RBHOST must be set to the host:server address of the Rulebase Server
process.
SSA_SESV_SEPORT
Set to the port number that the Search Server will be listening on. Set to 0 (zero) to prevent the Search Server
process from starting/stopping.
SSA_SESV_XMPORT
Set to the port number that the XML Search Server will be listening on. Set to 0 (zero) to prevent the XML Search
Server process from starting/stopping.
12
Chapter 2: Servers
SSA_SESV_XSPORT
Set to the port number that the Synchronization Server will be listening on. Set to 0 (zero) to prevent the
Synchronization Server process from starting.
SSA_SESV_HTPORT
Set to the port number that the HTTP Search Server will be listening on. Set to 0 (zero) to prevent the HTTP
Search Server process from starting/stopping.
SSA_SESV_HOST
The host name of the computer on which the various server processes are running. This variable is used only by
the idssedn script.
13
three seconds. Default value is -y0,0. When Max is 0, the Search Server or the Rulebase Server retries
indefinitely until the connection to the database succeeds.
-1File
Specifies the file where messages written to stdout will be redirected.
-2File
Specifies the file where messages written to stderr will be redirected.
-3File
Specifies the file where error & debug messages will be written. When the environment variable SSAOPTS
contains value +L, all error messages will be written to this log.
-uRB_Options
Controls optional aspects of Rulebase server behaviour. See the RB Server Options section for details.
To start a combined Search/Rulebase server, specify -n and -m.
To start a standalone Search Server, specify -n and -h.
To start a standalone Rulebase Server, specify -m .
To start a standalone XML Search Server, specify -x.
To start a standalone Synchronization Server, specify -s .
To start a standalone HTTP Search Server, specify -H.
RB Server Options
Some optional aspects of Rulebase Server behavior are controlled with the -u switch.
0x0001 (110)
Keeps the Rulebase cache in memory when no users are currently connected. Omitting this option can reduce
memory utilization. Specifying this option can improve RB performance.
0x0100 (25610)
Force the RB Server to restart when a Rulebase read operation fails. This may be useful if the database server
has been bounced causing the RB Servers connections to be dropped. Without this option, the RB Server will fail
any clients requests that require access to the database, but clients accessing cached rules will continue to
function normally.
The value specified with the -u switch is treated as decimal, unless it is prefixed with an x. A combination of options
may be specified by adding the values together. For example, to keep the RB cache in memory and force it to restart
on a read error, specify either -ux101 or -u257.
Connection Server
The MDM-RE Connection Server can be started from the command line as follows:
For Win32: %SSABIN%\ssacosv Switches
For UNIX: $SSABIN/ssacosv Switches
where Switches are
-hHostname:hostport This is the hostname or IP address of the machine where the MDM-RE Search Server is
running. If not supplied, the MDM-RE Search Server is assumed to be running on the same machine as the
Connection Server. The hostport enables you to specify the port number used by the MDM-RE Search Server.
-nListenPort Specifies the port number to use when listening for client connections. The default port number is
1667.
14
Chapter 2: Servers
Console Server
The MDM-RE Console Server can be started from the command line as follows. Optional servers are not started if
their host:port is not specified (-h).
For Win32: %SSABIN%\ssacssv Switches
For UNIX: $SSABIN/ssacssv Switches
where Switches are
-nPort
Defines the Console Servers port number. If the default port number of 1669 is already used by another
application, use this parameter to request a different value. Any client connecting to this server would then have
to specify the same port number.
-hrbHost:Port
Rulebase Servers Host name and port.
-hseHost:Port
Search Servers Host name and port.
-hcoHost:Port
Connection Servers Host name and port.
-hhtHost:Port
Optional HTTP Servers Host name and port.
-hxmHost:Port
Optional XML Servers Host name and port.
-hxsHost:Port
Optional XS Servers Host name and port.
-1File
Specifies the file where messages written to stdout will be redirected.
-2File
Specifies the file where messages written to stderr will be redirected.
-3File
Specifies the file where error and debug messages will be written. When SSAOPTS environment variable
contains +L, all error messages will be written to this log.
-wWorkDir
Specifies the working directory for the Console Server process.
-zn
Passes through as argument to Search Server.
15
-m
Specify Rulebase Server options to be passed to the spawned RB server. This option uses the same values as
documented in the RB Server Options section but is prefixed by -m instead of -u.
-o
Launch the Console Server without launching the Connection and combined Rulebase/Search Servers.
-tDirectory
Specifies the absolute name of the directory which contains the test files used in Configure Mode. The install test
is in $SSAWORKDIR/systems. On Win32 platforms this parameter is supplied by the Installer.
-iFile
Informs the server to start in Configure Mode. This option is set in order to complete a new installation. It causes
the first console client to start a session to run the install test. File is a file in the directory specified by the -t switch.
It contains a list of system import files. These files are used during the testing phase of the setup. The name of this
file should be tests.dat. On Win32 platforms the server is started in this mode by the Installer.
-uUID -pPWD -sSVC
These specify the Users Database Userid, Password and Service to be used when communicating with the
Database in Configure Mode. They are passed to the client as default values to be used during the test. If not
supplied, these values default to blanks. If any of these options are supplied in "normal" mode they are
ignored.
Stopping
This section provides information about how to stop the servers.
Default Configuration
Win32
Servers are stopped using the Server Shutdown icon in the Informaticas Products folder or by running the script
%SSABIN%\idsdown.
UNIX
Server are stopped using the script $SSABIN/idsdown. It must be run from a shell that has the Informaticas
environment variables set (by sourcing the ssaset script first).
Custom Configuration
Use the ssashut utility to stop individual servers or close (flush) sessions held by the Connection Server.
For Win32: %SSABIN%\ssashut Switches
For UNIX: $SSABIN/ssashut Switches
where Switches are
16
Chapter 2: Servers
-hHost:Port
Host and Port specify the host name and port number of the server to be shut down.
-f
Flush sessions instead of shutting down the server.
-v
Verbosity.
-z
Hard shutdown. This option forces the server to shutdown immediately by closing active connections. Any active
clients will receive socket-related error messages. This option is mutually exclusive with -f.
Note: ssashut may report that a connection could not be established to the nominated server. Some of the possible
reasons include:
Wrong host or port number or both was specified, or
Server is not currently running.
Note: See also the description of the Windows sample script idssedn.bat in the Sample Server Start-up and
Shutdown Scripts sections above.
Restarting
All servers (Connection Server, combined Search/Rulebase Servers and Console Server) are launched as a pair of
processes. The first process spawns a second server process that acts as the real server that clients connect to. If the
spawned server crashes, the parent process automatically spawns a new copy of itself. This provides a degree of fault
tolerance.
Rulebase Server
The Rulebase Server has special restart requirements because it uses a locking mechanism to protect itself. The
locking mechanism prevents two Rulebase Servers updating the same Rulebase tables.
When a parent Rulebase server starts, it generates a unique Id and passes it to the child server. When the child opens
the Rulebase it saves the Id in the Rulebase.
If another Rulebase server attempts to open the same Rulebase, its Id will not match the value held in the Rulebase
and an error message similar to this is displayed:
Rulebase is locked
Rulebase In use by ssa.identitysystems.com IP=203.2.203.105 on port=1668,
ID=271259152
IS ANOTHER RULEBASE SERVER RUNNING?
Automatic Restart
If the child server crashes, the parent server spawns a new child with the same Id as the original child.
When the child server starts and finds an Id already present, it compares it to the parents. If they are the same it
displays the following message and restarts successfully:
This is an automatic restart
Manual Restart
If the computer crashes (and all processes terminate), the Rulebase remains locked. The next time a new pair of
parent/child Rulebase Servers are started, the parent generates a new unique Id. It will not match the Id stored in the
Restarting
17
Rulebase, so the child server will fail to start. In this situation, you can manually override the lock by setting an
environment variable to the same Id that currently locks the Rulebase. For example,
SSA_RB_RESTART_ID=271259152
When the Rulebase server is started, it will use the environment variable to unlock the Rulebase (as long as the two
Ids match). It will then use the freshly generated parent Id to re-lock it. Therefore the environment variable can only be
used once to unlock the database. A manual restart generates the following message in the server log:
This is a manual restart
Connection Aliases
Users must not connect to the same Rulebase Server using multiple userids or service names that are aliases for the
same physical rulebase.
For example, if the service names Jupiter and Mars are aliases for the same Oracle service, all rulebase connection
strings must specify either Jupiter (or Mars) but must not use a mixture. Similarly, when using Oracles Operating
System Authentication feature, a connection string that explicitly provides a userid may be an alias of one that does
not, as they may both be routed to the same physical rulebase. In this case, use one consistent form for the connection
string, or consider using a dictionary alias.
The rulebase name is used to identify a cache containing updated rulebase data. The use of alias names will create
multiple caches, which will be written to the same physical rulebase, causing corruption.
MDM-RE will detect if an alias is used and refuse to open the connection, stating that the rulebase is already owned by
another user.
Server Statistics
Progress information can be retrieved for the servers, which are themselves jobs started by the Console. See Console
Client below for details about progress information. The slider can be used to slow the refresh rate from once per
second (the default) to up to 30 seconds.
18
Chapter 2: Servers
Because this has the potential to impact performance, it is not switched on by default. Some environment variables
are required to be set in order for this feature to become available.
In the environment script, you need to set the environment variable SSA_SERVER_STATS to YES and set the
environment variable SSA_RBNAME to the name of the Rulebase currently in use.
Note: To keep your password secure, it is recommended that a Dictionary Alias be used.
Then when the servers are started, issue a refresh. The search server progress information will be displayed in the
jobs window.
Note: If the rulebase has only just been created, first use the console client to stop and restart the servers.
There will be two entries. One will be an overview job whose function is to restart the servers if one fails. It will state
how long it has been running and what servers are active. Its logs are often interesting though.
The other will have the progress details of the search servers, if SSA_SERVER_STATS=YES. Otherwise it will merely list the
individual servers and their start times.
The progress will look something like this:
ssasrsv: server 0:28:14.000
rulebase server: active
clients 4
rulebases 1
status available
search server: active
== Search clients ====
formerly active clients: 6
currently active clients: 1
maximum concurrent clients: 2
minimum duration: 0.000 seconds
maximum duration: 30 minutes 28.979 seconds
total duration: 37 minutes 21.435 seconds
average duration: 320.205 seconds
==== Searches ====
formerly active clients: 53558
currently active clients: 0
maximum concurrent clients: 1
minimum duration: 0.004 seconds
maximum duration: 1.692 seconds
total duration: 3 minutes 58.877 seconds
average duration: 0.004 seconds
==== Name3 clients ====
formerly active clients: 2
currently active clients: 0
maximum concurrent clients: 2
minimum duration: 6 minutes 37.422 seconds
maximum duration: 6 minutes 37.532 seconds
total duration: 13 minutes 14.954 seconds
average duration: 397.477 seconds
A particular job may run a series of searches, some in parallel. The maximum and minimum duration are recorded
rather than the average. Generally speaking, a large maximum that continues getting larger indicates a client that has
failed to disconnect. It can be seen that a small number of search clients can carry out a large number of searches. The
average can be found by dividing the total duration by the total number of searches. Here 37m21s = 2241s/7 = 320s
19
Overview
Rulebase Server Groups provide Rulebase redundancy by allowing several Rulebase Servers to run concurrently.
Only one Rulebase Server is permitted to respond to queries (known as the Primary).
The other Rulebase Servers (the Secondaries) periodically poll the Primary to determine if / when it is no longer
working so that one of them may assume the role of the Primary.
This feature is designed to be used in a distributed database (cluster) environment where multiple database servers
are running on different network nodes (machines) while presenting a unified appearance as a "single database". All
nodes are connected to a shared disk sub-system by a storage area network. From a database clients perspective,
the database remains available when at least one of the nodes remains operational. Additional nodes can be started
or shutdown transparently, without affecting database client connectivity or data integrity.
Different software vendors use different names for this sort of technology. For example, Microsoft SQLServer Clusters
and Oracles Real Application Clusters are capable of providing the database functionality and a Veritas Cluster
Server could be used to provide the Operating System dependent cluster related services.
The RBSG implementation does not make use of any proprietary features from any particular vendor. It simply
requires that a consistent view of the database remains accessible when at least one node is operational.
Discussion
The database instance that the Rulebase Server is accessing must be absolutely robust, in the sense that there is no
possibility of it becoming unavailable while there is a working network and at least one working machine in that
network.
Only one Rulebase Server will respond to Rulebase requests no matter how many Rulebase Servers are in the
group.
A RBSG is shut down using the idsdown script. This will stop all Rulebase Servers. There is no mechanism to shut
down an individual Secondary Rulebase Server other than to kill it.
The Search and Rulebase Servers must always be started as separate servers and communicate through sockets. A
combined Search / Rulebase Server is not permitted.
A unique SSA_RB_RESTART_ID for a RBSG will be set once when the group starts and will remain unchanged for the life
of the group.
The Console Server must not automatically launch any other servers. It must be started with the -o switch.
The -g switch is used to assign Rulebase Servers to groups.
20
Chapter 2: Servers
Parameters
Specify the following parameters when starting servers in a RBSG.
Server
Parameter
Rulebase Server
Search Server
Console Server
rbsgdown Utility
You use the rbsgdown utility to shut down all the primary and secondary Rulebase Servers. You can specify the
command at any node. The rbsgdown utility stops all the clients connected to the Rulebase Servers. The rbsgdown
utility cannot be used for other servers and is specifically for the Rulebase Servers.
The following is a code sample to specify the command:
rbsgdown -gfranky,$SSA_RBNAME
where $SSA_RBNAME = */*@servicename
Example
The name of the RBSG used in this example is franky.
The environment variable %SSA_GRPDB% contains the connection string to the cluster database. This database
must contain the Rulebase objects and the IDS_RB_GROUP table. For example, it might be defined as odb:99:uid/
pwd@clusterdb.
Start the first Rulebase Server in the group:
set SSA_PRM="MDM-RE rb1 Server for group port 9997"
set SSA_LOGS=-1%SSAWORKDIR%\idsrb1v.log -2%SSAWORKDIR%\idsrb1v.err -3%SSAWORKDIR%\idsrb1v.dbg
set SSA_ISSUP_CMD=start %SSA_PRM% "%SSABIN%\ssasrsv"
%SSA_ISSUP_CMD% -m9997 -gfranky,%SSA_GRPDB% -w1 %SSA_LOGS%
21
UNIX example
SSA_LOGS="-1$SSAWORKDIR/idsrb1v.log -2$SSAWORKDIR/idsrb1v.err -3$SSAWORKDIR/idsrb1v.dbg"
export SSA_LOGS
$SSABIN/ssasrsv -m9997 -gfranky,$SSA_GRPDB -w1 $SSA_LOGS
Start a second Rulebase Server in the same group:
set SSA_PRM="MDM-RE rb2 Server for group port 9999"
set SSA_LOGS=-1%SSAWORKDIR%\idsrb2v.log -2%SSAWORKDIR%\idsrb2v.err -3%SSAWORKDIR%\idsrb2v.dbg
set SSA_ISSUP_CMD=start %SSA_PRM% "%SSABIN%\ssasrsv"
%SSA_ISSUP_CMD% -m9999 -gfranky,%SSA_GRPDB% -w1 %SSA_LOGS%
UNIX example
SSA_LOGS="-1$SSAWORKDIR/idsrb2v.log -2$SSAWORKDIR/idsrb2v.err -3$SSAWORKDIR/idsrb2v.dbg"
export SSA_LOGS
$SSABIN/ssasrsv -m9999 -gfranky,$SSA_GRPDB -w1 $SSA_LOGS &
If the two servers are started on the same machine they must have different port numbers (9997 and 9999
respectively). If they are started on different machines they could use the same port numbers.
We now have two Rulebase Servers running. One will become the Primary Rulebase for this RBSG and the other will
go into Secondary polling mode where it will just monitor the first Rulebase and take over if it detects that the Primary
Rulebase has ceased to work.
We may start as many Rulebase Servers as necessary. All additional servers will become secondary servers.
Start a Search Server:
set SSA_PRM="MDM-RE se Server on %SSA_SEHOST%"
set SSA_LOGS=-1%SSAWORKDIR%\idssexx.log -2%SSAWORKDIR%\idssexx.err -3%SSAWORKDIR%\idssexx.dbg
set SSA_ISSUP_CMD=start %SSA_PRM% "%SSABIN%\ssasrsv"
%SSA_ISSUP_CMD% -n%SSA_SEPORT% -gfranky,%SSA_GRPDB% %SSA_LOGS%
UNIX example
SSA_LOGS="-1$SSAWORKDIR/idssexx.log -2$SSAWORKDIR/idssexx.err -3$SSAWORKDIR/idssexx.dbg"
export SSA_LOGS
$SSABIN/ssasrsv -n$SSA_SEPORT -gfranky,$SSA_GRPDB $SSA_LOGS &
Do not assign a RB Server port to the Search Server, as it will automatically determine the correct one based on the -g
parameter. An error will be generated if a RuleBase Server and the -g switch are both specified.
Start the Console Server:
set SSA_PRM="MDM-RE cs Server on %SSA_CSHOST%"
set SSA_LOGS=-1%SSAWORKDIR%\idscsxx.log -2%SSAWORKDIR%\idscsxx.err -3%SSAWORKDIR%\idscsxx.dbg
set SSA_ISSUP_CMD=start %SSA_PRM% "%SSABIN%\ssacssv"
set SSA_ISSUP_HOSTS=-hco%SSA_COHOST% -hse%SSA_SEHOST% -gfranky,%SSA_GRPDB%
%SSA_ISSUP_CMD% -o -n%SSA_CSPORT% %SSA_ISSUP_HOSTS% -w%SSAWORKDIR% %SSA_LOGS%
UNIX example
SSA_LOGS="-1$SSAWORKDIR/idscsxx.log -2$SSAWORKDIR/idscsxx.err -3$SSAWORKDIR/idscsxx.dbg"
export SSA_LOGS
SSA_ISSUP_HOSTS="-hco$SSA_COHOST -hse$SSA_SEHOST -gfranky,$SSA_GRPDB"
export SSA_ISSUP_HOSTS
$SSABIN/ssacssv -o -n$SSA_CSPORT $SSA_ISSUP_HOSTS -w$SSAWORKDIR $SSA_LOGS &
Do not assign a Rulebase Server port to the Console Server, as it will automatically determine the correct one based
on the -g parameter. Use the -o switch to prevent Search and Rulebase Servers from being spawned automatically.
22
Chapter 2: Servers
Environment Variables
The Console Server spawns utility programs to perform tasks like creating a System, loading an IDT and running the
batch search client. Some of these processes allow environment variables to be set to control or alter their behavior.
As the Console Server spawns them, they will inherit the servers environment variables.
Win32
The isss.bat script in the Server Installations env directory sets the Servers environment variables.
UNIX
UNIX platforms have a script in the server installation root directory called ssaset to set the environment variables.
Variable Descriptions
SSAOPTS
Used to set various logging and trace options. See the dumpshr chapter for details.
SSAPR
Directory name where SSA-NAME3 v2 Population files are located.
SSASQLLDR
Fully qualified name of the DBMS-specific loader utility, usually sqlldr (Oracle), db2 (UDB) or bcp (MSQ and
Sybase).
SSA_RESTRICTED_VARS
Contains a colon-separated list of environment variables which cannot be set by the console client.
SSA_SOCKET_TIMEOUTS
Specifies the timeout period as a comma-separated list for the following operations:
A client session to remain idle before the server cancels the session. The default value is 144000 seconds (40
hours).
A connection to the server to wait before terminating the attempt and generating an error. The default value is
50 seconds.
A write or send operation to complete successfully. The default value is 3600 seconds (1 hour).
A read or receive operation to complete successfully. The default value is 7200 seconds (2 hours).
If you configure the variable, you must specify the timeout periods for all the operations. For example,
SSA_SOCKET_TIMEOUTS=144000,50,3600,7200
SSATEMP
Some MDM Registry Edition programs and scripts require output to be written to a temporary directory. The
location of this directory is controlled by the SSATEMP variable. The default location of this directory is $HOME/
tmp in UNIX and %TEMP% in Windows installations. It is recommended that a separate location is created for each
user (each instance or running servers). This directory must have write and execute permissions.
Windows Services
MDM-RE Servers (and other processes) may be started as Windows Services. Any program or batch script may be
run during service start-up or shut-down by creating a new service with the idssvc utility:
Environment Variables
23
updsync is started without a start command, the service script will block (that is not return to the caller until updsync
stops). Note that %SSABIN%\idsup.bat uses start commands internally.
Other scripts may be called, but please remember to transfer control with a call command, otherwise control will
never be returned when the called script ends, which again, results in control not being returned by the service
script.
24
Chapter 2: Servers
When stopping servers with idsdown.bat, you may wish to specify the hard option to force an immediate shut-down
(by disconnecting active clients). In this case, you may also wish to start updsync with the --rbcheck switch to
periodically test Rulebase connectivity and to abort when the RB Server is inaccessible. This will avoid the need to
run syncstop.
The script must end by setting a response code to indicate success or failure. Use %SSABIN%\seterrlv %SSARC%,
Windows Services
25
CHAPTER 3
Console Client
This chapter includes the following topics:
Overview, 26
Starting, 26
Modes, 28
Window Layout, 29
Menu Items, 31
System Editor, 38
Log Viewer, 38
Overview
The MDM-RE Console provides the user with centralized control of the various components that make up the MDMRE system.
The Console is a client/server application.
The Console server is a non-interactive program, which would normally run on the machine where the database
resides. When it is run, the Console Server will establish its environment and then wait for clients to connect. Once one
or more clients are connected, the server launches and monitors the progress of the various MDM-RE programs at the
request of these clients.
The Console client is a Java GUI program. It can be launched on any machine which is connected through TCP/IP to
the Console Servers machine and which has a Java Runtime Environment.
Starting
This section provides information on how to start the Console client.
26
Starting
27
Modes
This section provides information on the modes you can connect.
Configure Mode
Configure Mode is used to run the Installation tests.
When the Console Client is run, it interrogates the Server to determine the Servers mode of operation. If the Server is
in Configure mode, the Client initiates the setup process by displaying several dialogs. The user is prompted to
supply the required information such as the users database name.
The user should fill in each of the required fields and then click Finish. The console will then go through the steps
involved in completing the installation of MDM-RE.
These include:
creating and initializing a Rulebase
running the standard tests
This serves to confirm that the MDM-RE installation is working correctly. Upon successful completion, the Server and
Client change to normal mode of operation. The Client can then be used to carry out normal MDM-RE operations.
There is no need to restart either the Client or the Server.
On the other hand, if an error should occur, the Server remains in Configure mode and the install process can be
repeated if required.
Normal Mode
When the Console Client is started it connects to the Console Server determined by the -h parameter, if supplied, or to
the default Console Server. It then determines from the Server the mode of operation.
If the mode of operation is not Configure Mode, the Client presents a dialog to the user that contains a list of usersettable variables. These variables are described below.
Rulebase Name
The name of the Rulebase to be used.
Work Directory
The name of the directory on the servers machine where output files will be placed. This field is mandatory. Note
that this value can be set using the -w command line option.
Client Work Directory
This defines the name of the Work Directory to be used by Client programs. If specified, it must specify a directory
which is accessible to the machine on which the Client is running. At present, this parameter is used only by the
Relate Client. So, if you are not planning to run the Relate Client, then there is no need to supply this
parameter.
Service Group Directory
When a new System is created, MDM-RE will look in this directory for any required SSA-NAME3 v1.8 service
groups (in the form of .dat files). This value can be overridden by a parameter in the Create System dialog. This
parameter should be left blank if SSA-NAME3 v1.8 is not used.
Rulebase Server
The name of the host where the Rulebase Server to be used during this session is running.
Port
The port number on which the Rulebase Server is listening.
28
Connection Server
The name of the host where the Connection Server to be used during this session is running.
Port
The port number on which the Connection Server is listening.
Search Server
The name of the host where the Search Server to be used during this session is running.
Port
The port number on which the Search Server is listening.
Statistics
If selected, the log files will include statistics.
Usage Summary
Select this option to produce database usage statistics.
Server Trace
If selected the Console Server produces verbose output. This is for troubleshooting purposes and should
normally be disabled.
Live Progress
Check this option to see the live progress every time an action is performed.
All the above variables are used by the Console Server to service requests from the Client. Therefore, care should be
taken to see that the values are correct. The user should make any required changes and click OK. At this point, the
Main Console Window is displayed.
Window Layout
The user may now make a selection from the various buttons to perform the desired task. The buttons are arranged in
two groups. The row of buttons along the top of the Console window are associated with the various objects with which
a user might want to work, such as System, Rulebase, etc. Click one of these buttons causes a second group of
buttons to appear down the left-hand side of the Console window. These buttons are associated with various actions
that can be carried out on the object selected from the first button group. Example, if the user click Rulebase then the
possible actions will be Edit and Create and two buttons will appear in the second button group to allow the user to
select the desired action. In addition, there is a group of four buttons at the bottom of the left hand panel. These
buttons are independent of the top row of buttons and provide quick access to some basic functions.
In addition to the buttons there is a menu bar. In general, the options on the menu bar mirror those available through
the buttons mentioned above.
To the right of the second button group is the messages panel. This is a read only area where Console will display
progress and error messages.
Along the bottom of the window is the status bar. This contains the current settings for Work Directory, Rulebase and
System.
Launched Jobs
This is a list of all the jobs launched during the current session. Each user can access more information about a
particular job in the list. Click the Open button.
Window Layout
29
When reconnecting the client to the console server, the list will display all the currently running jobs for all console
clients using the same Rulebase.
The progress messages for each job are not displayed automatically when a Client reconnects. The user must select a
running job from the list and click Open (or double-click the item). This will open the usual progress window.
Options
Open
Opens a status window for the selected job.
Delete
Remove the selected job from the list. Note that only completed jobs may be removed from the list.
Refresh
Refreshes the list with the currently running jobs for the same Rulebase.
30
Server Status
This button activates the Status dialog, which reports the status of the MDM-RE servers, the Rulebase and the
database associated with the current system.
Settings
This option will display the dialog containing the current environment of the client. This is the same dialog as the one
presented when the Client is first started. The user may make any required changes to the environment variables.
View Logs
Use this button to activate the Log Viewer. The Log Viewer allows the various output files produced by MDM-RE to be
viewed.
The Log Viewer displays the files in a Tree layout with the file size (rounded to the nearest kB) and indicates if a file is
empty. The Log Viewer also gives the user the ability to delete individual logs as well as all the logs associated with the
run itself.
Clear Messages
Click this button to clear the main message window.
Menu Items
This section describes about the menu items in MDM-RE.
Servers Menu
Many of the following menu items refer to file names. MDM-RE Console does not support spaces in file names; its
behavior is undefined if such file names are used.
Menu item
Function
Start
Stop
Status
Allows the user to determine the current status the MDM-RE Servers.
Rulebase Menu
Menu item
Function
Select
Edit
Invokes the Rulebase Editor to edit the current Rulebase, defined by Rulebase Name and
Rulebase Server.
Menu Items
31
Menu item
Function
Create
Resync
Use this option to force the Console Client to resynchronize its connection to the Rulebase. This
may be necessary if a batch script has been run which has altered the state of the Rulebase in
any way.
Note: It should not be necessary to use this option in the majority of cases. Only users who are
running scripts which interact with MDM-RE outside of the Console may need to do so.
Database Menu
Menu item
Function
Create
System Menu
Menu item
Function
New
Create System
from an SDF
Input file: Specify the name of the flat file, which contains the
System to be imported. Mandatory parameter.
Import a
System from a
flat file
Parameters
32
Menu item
Function
Parameters
Clone the
current System
Select
Delete
System Status
Edit
Export
Output file: Specify the name of the file that will contain the
exported system. Mandatory parameter.
Menu Items
33
Menu item
Function
Parameters
Export SVG
Refresh
34
Output file: Specify the name of the flat file, which will contain
the exported Service Group.
Tools Menu
Menu item
Function
Search Client
Parameters
Output File Specify the name of the file to store the matching
records (all records not written to the optional -m0 and -m1 files).
Mandatory parameter.
Search Definition Select a Search Definition to be used. Mandatory
parameter.
Search Width Select a predefined search width. Narrow, Typical,
Exhaustive or Extreme to be used.
Match Tolerance Select a predefined match tolerance:
Conservative, Typical or Loose to be used.
Output Format Specify the report format. Values 07 are valid.
Answerset Table Specify the name of the AnswerSet table
created to hold the search results. It will be prefixed with
IDS_nn.
Starting Record ID Specify the starting record id here.
Return Search records Only Check this option to display only the
duplicate search records.
Remove Search Record Check this option to remove the search
record from the resulting set.
Append New Line Check this option, if a new line has to be append
after each search record and viceversa. Valid only for output
formats 0 and 3.
Trim Trailing Blanks Check this option, if the blank spaces have to
be trimmed and vice-versa. Valid only for output formats 0 and 3.
Run Clustering
Menu Items
35
Menu item
Function
Parameters
Load ID-Table
Run Program
Relate
Execute SQL
Relperf
Clustering
Viewer
36
The File menu will allow you to open a Post Report or a Database. You can open the same one several times if you
wish. This makes it easier to visually compare different parts of the same report at the same time.
Jobs Menu
This section describes about the Jobs menu options.
Edit
This option allows the user to
Define a new job
Edit a predefined job and also
Delete a pre-existing job
Run
This option allows the user to select and run a job, from a list of predefined jobs belonging to the system.
Parameters
Job NameSelect a job name to run from the list of available jobs in the current system.
Menu Items
37
Start FromStep Select the name of the step at which the job should start running. Steps previous to the one
System Editor
The System Editor is a GUI tool to create a new system and also edit an existing system. System editor has five
options:
Load
Use this option to load the changes made to the system.
Add
Use this option to add a new definition to the system.
Clone
Use this option to clone an existing definition in the system.
Delete
Use this option to delete an existing definition in the system.
Close
Use this option to close the editor.
Refer to the Editing a System section of the DESIGN GUIDE for more details on using the System Editor.
Log Viewer
Every time a procedure such as Load-IDT, Relate or a user-defined Job is started, a Run Number is assigned to that
run and all relevant information is stored in the Rulebase. This information includes the Completion Status and details
of any output files created during the run. The Run Number is used to uniquely identify the run.
The Log Viewer provides the user with the ability to access the run information for previously run jobs. There are two
classes of Jobs; System Jobs and Global Jobs. System Jobs are jobs that are run against a particular system, such as
Relate. Global Jobs are jobs that are not run against a particular System. These jobs either involve more than 1
System (example, Clone System) or are responsible for setting up a System (example, Create System).
38
A list of the output files created by this run will appear below the list of runs. The most recently created output file will
be automatically displayed in the right hand pane of the Log Viewer. To view other files in the list simply click the
required file in the tree display.
Note: The Log Viewer will truncate (for display only) log files larger than 960KB.
Log Viewer
39
CHAPTER 4
Search Clients
This chapter includes the following topics:
Overview, 40
Deployable Search Clients, 41
Administrator Search Clients, 42
HTTP Search Client, 44
Relate, 47
DupFinder, 53
Overview
MDM-RE provides several "out of the box" search clients that may be used as soon as a system has been defined and
loaded. Although you are free to create your own customized search clients using the MDM-RE Search API, these
clients provide facilities to quickly utilize and/or deploy search functionality without any coding.
40
Java Applet
A Java Applet suitable for embedding within an HTML page is available as a Web based client. A Java enabled
browser must be used to run the applet. A Java plug-in of version 1.4 or higher is recommended.
Parameters
The following parameters are mandatory:
HostPort
The Port number that the MDM-RE Connection Server is listening on. Note that the Connection Server and Web
Server must run on the same computer.
RulebaseName
The name of the Rulebase
WorkDirectory
The working directory.
System
The name of the System to open at startup.
Search
The name of the Search to open at startup.
HTML
The following HTML code snippet demonstrates how to instruct a browser to load the applet. The applets code
resides in a JAR file that is in the same directory as the HTML document. This example sets the initial size of the applet
to 800 x 600 pixels.
<APPLET ARCHIVE="sclient.jar" CODE="ssa.clients.sclient.SsaClient"
WIDTH=800 HEIGHT=600>
<PARAM NAME="HostPort" VALUE="1667">
<PARAM NAME="RulebaseName" VALUE="odb:0:ssa/ssa@ora817">
<PARAM NAME="WorkDirectory" VALUE="c:\InformaticaIR\ids">
An example HTML is provided in samples/programs/applet/SimpleSearchClient.html.
Usage
To initiate a search, enter the required data and click the Search button.
The output results are shown in a table format and may be customized to reorder, resize and/or hide columns.
Columns are reordered and resized by dragging their titles. Columns can be hidden or reenabled by right-clicking on
the output table and selecting the appropriate option on the pop-up menu.
You can double-click on a specific record in the output table to perform a new search.
41
the previous search results. However it does not work with multi-byte character sets or UNICODE data.
A Lite client that supports multi-byte and UNICODE data. It also contains facilities to trace client side search data.
42
Note: The following parameters are specified on the command line in the client starting script ssasc: ADDRESS,
PORT, SEARCH, SYSTEM , RULEDB, WORKDIR. Unless these parameters are not removed from the script the
corresponding settings in the INI file are ignored.
43
Default Client
Upon startup, the Client prompts for the ADDRESS of the Server. Enter the Host name (or IP address) of the MDM-RE
Search Server. If left blank, the Host name defaults to the name of the machine running the Client.
If the MDM-RE Client is started without an initial Search you must choose a Search either from the Search menu or
from the Searches on the search toolbar. With a Search selected the program will open a new window for the MDMRE-ID Table. Each window represents one MDM-RE-ID Table, thus if multiple searches are defined on the one MDMRE-ID Table it will not open a new window. However, if a Search is selected which is not defined on any of the currently
open MDM-RE-ID Tables a new window will be opened.
With a window open and a Search selected you will be prompted to input the required parameters for the Search. You
can pressEnter or click the Search button to perform a search. The data will be loaded and sorted by score. Select the
STOP button, it will cause all current searches being loaded to stop.
If you wish to input values from an existing search simply select the field either before selecting the Search button (or
menu) or whilst the search panel is displayed.
To zoom view a record, double-click therecord. Right-click the record to bring up a pop-up menu with various options
of that record.
Note: The Print menu option doesnot currently work, due to limitations in Java.
You can dynamically resize or reposition any of the columns in the table view simply by either "grabbing" a column
header and repositioning it or dragging the border of the header in order to resize it. Furthermore there is a menu
option under Layout > Define Layoutwhich enables you to configure which columns are visible.
Under File there is the option to Save an output file. There is also the option to Zoom All records or Dismiss All
zooms.
There is a scrapbook that enables copying any relevant records for later perusal. You can launch searches from these
records in a similar fashion as from the main window.
This clients INI file is created/updated whenever this client shuts down.
Lite Client
At startup, the client presents the user with a list of available Systems. The default selection will be the first available
System in the Rulebase.
If you want to swtich between Systems and Searches by, click the Options button.
The Options dialog also allows the user to fine-tune the Search Widths and Match Tolerances. The options presented
may vary, as they are dependent on the System and Search definitions.
After you enter the required data, to initiate a search, click the Search button.
The output results are shown in a table format and may be customized to reorder, resize and/or hide columns.
Columns are re-ordered and re-sized by dragging their titles. Columns can be hidden or re-enabled. To do this, rightclick the output table and select the appropriate option on the pop-up menu.
A new search can be performed using a specific record in the output table. To do this, double-click that record.
44
Simply point your browser at the HTTP Search Server by typing its host:port in the Location Bar and follow the
prompts. The default port number of the HTTP Search Server is 1672.
If prompted for a Rulebase name, the client must supply the information using a Dictionary Alias without the ids:
prefix. See the Dictionary Alias section for more information. This is the only acceptable form of Rulebase name and
is necessary to avoid passing clear text passwords to the server. To avoid the need for Rulebase names altogether,
the administrator should define them in the HTTP Search Servers .ini file. Refer to the Configuring section below.
You do not need to enable any active content facilities such as Javascript. The Web pages are compatible with
Netscape 4, Internet Explorer 5 and Firefox 1.0 (or later versions).
Configuring
The HTTP Search Server will not start unless it has been enabled and configured.
It is enabled by allocating the servers host name SSA_HTHOST and port number SSA_HTPORT in the env\isss.bat
(Windows) or env/isss (UNIX) scripts.
The configuration process consists of creating a simple text file named htserv.ini. The file can be located in $SSAINI,
$HOME or $SSABIN, which are searched in that order.
The content of this file determines which Searches and Rulebases are visible to the Web client. It is read at server
initialization, so changes to the configuration become effective only after the HTTP Search Server is bounced. Lines
starting with a semi-colon (;) are treated as comments. White space in the section headings (example,
[profile:basic]) is not permitted, except as part of a name.
Generic Mode
The simplest possible file contains the following lines:
[Server]
mode = generic
This directs the HTTP Search Server to prompt the client for a Rulebase name and does not restrict access to any
systems or searches. The optional line
rulebase = <dbtype>:<dbid>:<uid>/<pwd>@<svc>
may follow the mode line to specify the Rulebase to use. When provided, the client will not be prompted for this
information. When omitted, the HTTP Search Server will request the client to enter the name of the Rulebase.
Note: Rulebase names are sent from the client to the server in clear text using the HTTP protocol. To avoid passing
database passwords, clients must specify Dictionary Alias names without the ids: prefix. The HTTP Search
Server assumes all Rulebase names received through HTTP are Dictionary Aliases and automatically prefixes them
with ids: before use.
Custom Mode
Custom mode is use to configure the Systems, Searches and Rulebases visible to the Web client. When the HTTP
Search Server runs in custom mode.
[Server]
mode = custom
profiles = basic
the Web client will offer the choice of one of a number of predefined profiles, that have been defined to allow access to
a specific Rulebase, System and Search(es).
For example,
[profile:basic]
rules = just_one_search
[rule:just_one_search]
rulebase = odb:0:ssa/ssa@ora10g
system = testx216
45
Operation
Upon connection, the HTTP Search Server will prompt you for the Rulebase, followed by the system and search you
would like to perform. When selecting the rulebase, note that the user must specify a Dictionary Alias name without
the ids:prefix. This avoids having to give users access to the database password. This requirement is not available
in Custom Mode, as the Rulebase must be specified in the config file.
Once in the search page, users can switch between different searches available to them. To switch between tabs,
click the tabs at the top of the page.
To perform a search, the user must enter the appropriate information in the search fields on the top left of the page,
then press enter, or click the Search button. The search data and browser encoding should be in UTF-8 format.
If the results are too wide, or too long to fit within the browser view port, scrollbars will appear indicating that more data
is available. These scrollbars will scroll the results only - not the whole page. You can centre the results in the viewport
so that they fill the whole browser. To centre the results, click the result summary (56 results found for ...).
You can manually override the prompt used by setting an environment variable with the desired label. This must be
defined in the execution environment of the Search server. For example,
SSA_CNDS_LABEL=MySearch
46
Relate
relate is a batch search application that accesses the MDM-RE Search Server using the standard Search APIs.
It reads an input file containing search transactions. Each search transaction is passed to the Search Server which
uses the nominated Search Definition to find matching records. These are written to the output file by relate.
Input records must be separated by a newline. By default their format must match the layout of the IDT to be searched.
If the format differs from the IDT layout, the -iswitch can be used to nominate an input format. Multiple output formats
are supported. These are controlled with the -o switch.
Normally all records returned by the Search Server are written to the output file. That is those records that have an
acceptable score as determined by the Search Definition. Additional filtering is possible with the -l and -u switches.
These are used to set upper and lower bounds for acceptable scores and are applied by relate prior to emitting records
to the output report. Note that filtering with -l and -u is not integrated with the other options. The filter will remove all
records that are not within bounds, even if this will result in an empty set, irrespective of whether or not non-empty sets
were requested. For example with the -x or -m switches. These filters are primarily used to experiment with score
thresholds. Once correct thresholds have been determined, add them to the Search Definition and discontinue the use
of -l and -u.
The -m switch can be used to create multiple output files.
relate can also search for duplicate records in the IDT. When started with the -x switch, relate runs in DupFinder
mode.
Note: The input and output files need to be local to where the relate process runs. If relate is started from the
command line, the files must be addressable from the same machine. If relate is started through the Console Client, it
will run on the same machine as the Console Server.
Relate
47
-Ffilter
Optional. Nominates a single dynamic SQL Filter. For individual searches within a Multi-Search, this switch does not support
multiple filter values.
-iInputViewName
Optional. Nominates the view that describes the input records. The default is the IDT layout.
-jSearchWidth
Optional. Nominates a predefined search width that overrides the width in the Search Controls: Narrow, Typical, Exhaustive
or Extreme. You cannot use this parameter with a Multi-Search.
-kMatchTolerance
Optional. Nominates a predefined match tolerance that overrides the tolerance specified in the Search Controls: Conservative,
Typical or Loose. You cannot use this parameter with a Multi-Search.
-nx[:y[:z]]
Optional. Use x search threads with an input queue of y records and an output queue of z records for each thread.
-s
Optional. Create a histogram of search transaction durations.
-ss
Optional. Provide individual timings for each search transaction.
-t
Optional. Append newline. The supported output formats are 0 and 3.
-tt
Optional. Append newline and trim trailing blanks. The supported output formats are 0 and 3.
-Tnum[,score]
Optional. Limit to num the number of records written from a result-set to the output file. Optionally, write more records than num if
the records have a Score that is equal or greater than score.
-on
Optional. Specifies the report output format.
-ln
Optional. n = Lower score limit. Default is 0.
-un
Optional. n = Upper score limit. Default is 100.
-v
Optional. Verbosity level.
-Vpackage:parm
Optional. The VPD context-setting package and corresponding parameter.
Relate
49
-y
Optional. Print output view information at the start of the output file. Requires you to specify -c.
-x[{n|s}][rpt,recid]
Optional. DupFinder mode.
-X
XML output.
Report Formats
When you write to output files, choose a report value based on the output format that you want.
The following table describes the report format for each report value.
Report
Value
Report Format
Prints each file record found on a new line. The following text shows sample output based on the report
value:
JobN000005A ALGER COLLINS
JobN000032A COLLINS
Prints a line for each file record returned that consists of the search record, a nine digit search number that
corresponds to the number of the search record in the input file, a three digit score, and the file record.
Report prints nothing if no match is found. The following text shows sample output based on the report
value:
JobN000005A ALGER COLLINS#000033064 100 JobN000005A ALGER COLLINS JobN000005A
ALGER COLLINS#000033064 099 JobN000032A COLLINS
Prints a group of records. The first line consists of the search record and then the search number. This is
followed by one line per file record. Each file record is indented and is followed by the search number and
score. Report prints nothing if no match is found. The following text shows sample output based on the report
value:
JobN000005A ALGER COLLINS #000033064 JobN000005A ALGER COLLINS #000033064 100
JobN000032A COLLINS #000033064 099
Prints the search record and a set of file records. A search number, surrounded by asterisks, precedes the
search record. A three digit score precedes each file record. Report prints nothing if no match is found. The
following text shows sample output based on the report value:
********** 000033064 ********** ---JobN000005A ALGER COLLINS} 100JobN000005A
ALGER COLLINS} 099JobN000032A COLLINS
Prints the search number and the file record on the same line. Report prints nothing if no match is found. The
following text shows sample output based on the report value:
00033064JobN000005A ALGER COLLINS
00033064JobN000032A COLLINS
50
Prints the best file record for each search. You cannot specify a single match file (-m1). If you do not specify
-m0, the output file contains the search record followed by the best file record, both on the same line. Report
prints nothing if no match is found. If you specify -m0, the output file contains the best record, if any match is
found. Else, the record is written to the unmatched file. The following text shows sample output based on the
report value:
JobN000005A ALGER COLLINS JobN000005A ALGER COLLINS
Report
Value
Report Format
Prints the search number and the file record on the same line. Also sets the search number to zero. The
following text shows sample output based on the report value:
00000000JobN000005A ALGER COLLINS
00000000JobN000032A COLLINS
Prints the best file record and the score returned for each search. You cannot specify a single match file
(-m1). If you do not specify -m0, the output file contains the search record followed by the best file record,
both on the same line. Report prints nothing if no match is found. If you specify -m0, the output file contains
the best record, if any match is found. Else, the record is written to the unmatched file. The following text
shows sample output based on the report value:
100JobN000005A ALGER COLLINS JobN000005A ALGER COLLINS
Threads
Relate can run in a multi-threaded mode when the -n option is specified. Each search thread will independently
connect to the Search Server and process searches in parallel.
There are two additional parameters associated with the -n switch: input queue and output queue.
The input queue specifies the length of queue that each thread will use to store the search records in. This queue must
be long enough to allow the thread not to wait for I/O on the local relate input file. In general the default of 100 will be
ample.
The output queue specifies the length of the queue that will hold each search threads results. If any individual
searches are expected to generate many matches, increasing the output queue size may improve performance.
Note: The output order of duplicate sets in a multi-threaded DupFinder report is dependent on the number of threads
used to create the report.
SQL Input
relate can read input records from an SQL database instead of a file. In order to do this you must
define source table(s) in the UST Section of the SDF using the define_source clause
create a Logical-File Definition with INPUT-FORMAT=SQL
run relate with the input file parameter set to lfile=xxx where xxx is the name of the Logical-File Definition.
The source definition should match the layout of the IDT (same field names, offsets and lengths). If it does not, use the
-iswitch to specify an input view so that the Search Server will convert the input record into IDT format prior to
searching.
Note: A define_source clause automatically creates an input-view with the same name as the source.
XML Input
relate can read input records from a XML file instead of a flat file or SQL database. In order to do this you must:
define source table(s) in the UST Section of the SDF using the define_source clause
create a Logical-File Definition with INPUT-FORMAT=XML
run relate with the input file parameter set to lfile=xxx where xxx is the name of the Logical-File Definition.
Relate
51
The source definition must match the layout of the IDT (same field names, offsets and lengths - and XML tags are case
sensitive). If it does not, you can specify an XSLT clause, which is a reference to another XML logical-file-definition,
which must be a valid XSLT stylesheet. This can be used to transform the XML input file into the required form.
For example:
logical-file-definition
*======================
NAME=
INPUT-FORMAT=
PHYSICAL-FILE=
XSLT=
*
logical-file-definition
*======================
NAME=
COMMENT=
PHYSICAL-FILE=
FORMAT=
*
lf-relate-xml
XML
"+/data/relate.xml"
lf-input-stylesheet
lf-input-stylesheet
"input stylesheet for initial load"
"+/data/relate.xsl"
XML
Delimited Input
Relate can read delimited input files. The field delimiter, field separator and record separator are defined with the -dd,
-df and -dr switches respectively. They may specify a printable character or an escape sequence such as \n or \x0a.
The default values are:
Field delimiter -dd"
Field separator -df,
Record Separator -dr\n
Note: When using a UNIX based operating system, it is best to use hexadecimal values to define the delimiters, as
certain ASCII characters have a reserved meaning and must be "escaped" by preceding them with a backslash (\)
character.
The delimited data must be transformed into a format that matches the input view used by relate (specified with the
-iswitch). If no input view is used, the delimited data must be transformed into IDT layout. Having determined the input
view that will be used, the -dlswitch is used to describe how to transform the delimited data into that format. It specifies
a comma-separated list of triplets:
-dl<triplet>,...
where each <triplet> consists of
Field length (in printable decimal digits),
R/L justification (optional, if omitted L is the default),
Filler character preceded by a dash (optional, if omitted the default is a blank). It may be specified using an escape
sequence.
The following example defines three fields. The first is 30 bytes long and uses the default justification and filler. The
second field is 10 bytes, right justified and filled with 0. The third field is 50 bytes in length, left justified and filled with !
(ASCII 0x21).
-dl30,10R-0,50L-\x21
The triplets are used by the transformation engine to convert the delimited data. The field lengths must match the
length and order of fields in the input view. If a delimited field is longer than the field length, it will be truncated. If it is
shorter than the field length, it will be either left or right justified and padded with the filler character up to the specified
field length.
52
DupFinder Mode
Relate performs the DupFinder function when started with the -xswitch. Refer to the DupFinder section of the
DEVELOPER GUIDE for background information.
The syntax is:
-x[s|n][rpt,recid]
where
s
Only return search record in set
n
Do not return search record in set
rpt
The max number of times to call ids_search_dedupe_start (0=unlimited). Used with DEDUP-PROGRESS= parameter in
the Multi-Search Definition to return after processing DEDUP-PROGRESS records.
recid
Starting RecId for search process (default is 0; the beginning of the IDT).
Fmt
R
X
DupFinder
DupFinder is a search client that detects duplicate IDT records.
DupFinder
53
DupFinder reads the IDT and treats each record as a search record. Output is written to an external flat file or
AnswerSet.
The duplicate finding process must use a suitably defined Multi-Search Definition (see DESIGN GUIDE ) and can
process all, or a subset of the IDT records. Limiting the number of records is accomplished by specifying (in the
definition) a maximum number of records to process, or by specifying a starting Record-Id.
The output by default includes the search record and its duplicates. An option can be specified to limit the output to the
search records (which found duplicates) only, or a set of duplicates with the search record removed.
54
CHAPTER 5
Table Loader
This chapter includes the following topics:
Concepts, 55
Starting, 55
Restarting, 57
Performance, 58
Fault Tolerance - Data Errors, 60
Locales, 61
Concepts
The MDM-RE Table Loader extracts data from either a flat-file or database tables and creates an Identity Table (IDT)
and Identity Indexes (IDXs).
It is a multi-threaded application and performs the following tasks in parallel:
Reads input source (flat-file or database)
Generates keys (multiple threads)
Sorts and writes output files for DBMS mass load utilities
Runs DBMS mass load utilities (multiple threads)
The Loader takes checkpoints between phases in its processing and can be restarted after a failure.
Starting
Console
To start the Table Loader, click the System > Load IDT. Select a Loader-Definition from the drop-down list. Progress
messages from the Loader will appear in a new window.
The Stop button in the Progress Window is used to instruct the Table Loader to abort processing. It may not stop
immediately if it is currently running an external process such as the DBMS load utility. The Table Loader does not kill
the utility; it waits for it to complete before stopping.
55
Batch
The Table Loader utility is called loadit. It is launched and managed in batch mode using the idsbatch utility.
The idsbatch is used to run user-defined jobs. The available jobs are defined in the User-Job-Definition section of the
SDF.
For more information about user-defined jobs, refer to the User-Job-Definition and User-Step-Definition sections in
the DESIGN GUIDE. For more information about the idsbatch utility, refer to the Batch Utilities / idsbatch section in
this guide.
56
Restarting
Checkpoints
The Table Loader takes checkpoints after the following major points in its processing:
Creation of IDT
Opening data source and creation of triggers (if necessary)
Source data extraction and key generation
Load of IDT
Creation of indexes on IDT
Analysis of IDT
Creation, loading and analysis of each IDX
the Table loader can be restarted after the last successful checkpoint.
However, anything that changes the workflow performed, or the output generated by the Table Loader invalidates the
checkpoint information. For example, if you change
the data source, or
Key-Logic and/or options, or
the number of indexes, or
Loader options such as Load-All-Indexes, Re-Index, IDT-Only, etc., or
Sync-level,
the previous checkpoints are invalid and you must not restart the load.
Note: The Load button in the System Editor deletes all restart information. Do not edit a System when a restart is
pending.
How to Restart
The MDM-RE Console keeps track of the Table Loaders status. When you click System > Load IDT, the console will
offer to restart a load if it failed last time.
To re-start, click Yes. If you wish to restart from the beginning, the partially loaded IDT and IDX must first be deleted by
running System > Refresh, followed by running System > Load IDT.
Restarting
57
Performance
The Table Loader uses multiple threads to overlap its work. Multiple threads are used during the data extraction, key
generation and DBMS load phases:
Reader
Reads source records from the database or input file and places them in a queue for the Key Generation threads
to process.
Key Generation
Processes the source records to create IDX rows. There are n key generation threads by default, where n in the
number of CPUs on the machine.
Writer
Writes the IDT and IDX rows to operating system files. These files are used as input to the DBMS Load utility. IDT
rows are written directly to a flat-file. IDX rows are pushed into the MDM-RE Sort utility where they are sorted and
written to an operating system file.
Loader
Threads merge sort files and run the DBMS load utilities to load the IDT and IDXs in parallel. There are m Loader
threads by default, where m in the number of CPUs on the machine.
The Table Loader can be tuned by setting the size of the Readers input queue and the Writers sort buffers as well as
the number of key generation and loader threads.
Input Queue
The size of the Readers input queue is set with the environment variable, SSALDR_RBSIZE=nnn
where nnn is the number of records. The default value is 5000.
This parameter is also used to calculate the size of the key generation output queues. They are calculated as
SSALDR_RBSIZE / number_of_key_threads * 8
In order to keep the Key Generation and Writer threads busy, the input queue must be filled as quickly as possible.
Flat-File Input
When reading from a flat-file, the input queue can be filled very quickly, and in general, the bottleneck is in the Key
Generation and/or Writer threads. Since the Writer thread blocks for a short period during sort processing, it is
advantageous to have a large input queue (and therefore large key generation output queues), so that key generation
can proceed concurrently.
Database Input
When the Readers input queue is filled from records from a database, the Reader thread is usually the bottleneck and
the other threads spend time waiting for work.
To determine how often a thread had to wait, refer to the statistics in the Table Loader log file. When each thread ends,
it reports the number of times it had to wait for work. For example,
Reader thread [1] ends. Records In 900000. Waits 960
Keygen thread [3] ends. Processed 450000. Waits 214
58
Tuning
The objective is to make the input queue large enough to keep it from becoming the bottleneck.
If reading from the database and the reader thread reports 0 waits, the reader queue is long enough. If reading from a
flat-file, the reader queue must be set large enough so that the key generation threads are the busiest (least waits).
Sort Buffers
The Writer thread takes records from the Key Generation output queues and passes them to the MDM-RE Sort
routine. The sort places each row into a memory buffer. When the buffer becomes full, its contents are sorted and the
results are written to a sort work file on disk. Once all groups are sorted, the groups on disk are merged to create a fully
sorted file. The fully sorted file is used as input to the DBMS Load utility.
The performance of the sort is affected by the
size of the sort buffer,
number of sort threads, and
the placement of the disk files.
These are controlled by the DATABASE-OPTIONS=IDXSORT (. . . ) parameters defined in the SDF. The default sort
buffer size is 64MB.
A large sort buffer is desirable because
there will be less sorted groups to merge (less random I/O)
sorted groups are written in bursts of I/O, so they create less disk contention
they allow larger I/O buffers during the merge phase
However large sort buffers will hold more unsorted records, and therefore they will be sorted less often and each sort
operation will take longer (as compared to a smaller sort buffer).
While sorting occurs, the writer thread is blocked. This means it can not remove records from the key generation
output queues, so they in turn will block if there is insufficient room to write their results. Therefore it is important that
the key generation output queue is large enough to enable key generation to continue while sorting occurs. Since the
key generation output queue size is determined by SSALDR_RBSIZE, it must be set quite high when large sort buffers are
in use.
Tuning
Allocate as much sort memory as possible. Make sure it is not so large as to cause swapping to occur, as this negates
the benefit of a memory based sort.
If the Key Generation threads have more waits than the writer thread, it indicates that SSALDR_RBSIZE should be
increased.
Place the sort work file on a different device to the output file to avoid disk contention.
Performance
59
Compress-Key-Data
The appropriate size of the Compress-Key-Data parameter must be determined. Load a representative sample of
data and use the histkg utility to determine the appropriate setting. Refer to the Compressed Key Data section in the
DESIGN GUIDE for details.
DBMS Extents
When loading large amounts of data, it is wise to allocate large extents for the IDT and IDXs. Use the DATABASEOPTIONS=IDT(. . . )and IDX(. . . ) to allocate large extents and/or place the tables and indexes in appropriate
tablespaces.
Partitioning Data
Loading extremely large systems requires a scalable solution. In this situation, consider partitioning the data on a
logical criterion such as a range of IDs. Create one system per partition and load them in parallel.
2.
When there are only Lite Indexes left to load and the IDT has not been loaded yet.
3.
When loading to a UDB database, UDB creates tablespace locks that prevent concurrent loads.
4.
When loading to MSQ, all merge phases must be completed prior to starting the first mass load utilit (bcp).
missing from the IDT. However, these rows will still be present in the IDX, since IDX rows are stored in binary form
and are only interpreted by MDM-RE.
UDBs Import utility does not reject rows. Instead, the rows are loaded to the IDT with the incorrect column values
set to NULL.
60
Correcting Errors
The source data should be corrected and the IDT/IDXs reloaded. If the System is synchronized the Update
Synchronizer will automatically correct the IDT and IDXs while processing UST updates. Therefore it is unnecessary
to reload the tables.
Locales
The Table Loader parses the DBMSs Load Utility log file in order to determine if the load succeeded. By default it
searches for English language phrases in the log file. However, when the database server is installed on a machine
that uses a non-English locale, the DBMS Load Utility will write its log file using that character set. In these
circumstances, special environment variables must be defined to specify replacement phrases to search for. Failure
to do so will result in erroneous load failure messages reported by the Table Loader.
Oracle
The MDM-RE Table Loader (loadit) checks the number of records loaded by SQL*Loader. To do this, loadit parses the
text of SQL*Loaders output looking for particular strings. These strings are expected to be in English.
When a foreign language version of Oracle is used, two environment variables must be defined to specify the foreign
language text that corresponds to the English strings that loadit is looking for.
Set the environment variables SSALDR_ORA_READ_TXT and SSALDR_ORA_REJECT_TXT to the foreign
language strings that correspond to "Total logical records read:" and "Total logical records rejected:" messages
respectively. These variables must be the complete string, up to and including the :, starting from the left margin of
the output.
Example: An extract from a SQL*Loader Log in English:
Space
Space
Total
Total
Total
Total
0
6
0
MSQ
The MSQ implementation of the Table Loader searches for the phrase " rows copied." as this precedes the number
of rows loaded into the table. For example, 10000 rows were loaded in the follow example:
Starting copy...
1000 rows sent to
1000 rows sent to
1000 rows sent to
1000 rows sent to
SQL
SQL
SQL
SQL
Server.
Server.
Server.
Server.
Total
Total
Total
Total
sent:
sent:
sent:
sent:
1000
2000
3000
4000
Locales
61
62
CHAPTER 6
Update Synchronizer
This chapter includes the following topics:
Overview, 63
updsync utility, 66
updmulti utility, 69
Restarting Automatically, 73
Synchronization Level, 74
Transaction File / Table, 76
Integrity Checking, 78
Performance, 79
Timing Window, 81
Overview
The Update Synchronizer is a background process that applies updates to MDM Registry Edition Tables and Indexes
to keep them synchronized with changes to User Source Data. It can also compare the contents of the IDT/IDX against
the User Source Data and report any differences.
IDTs created with the SYNC option can be synchronized with User Source Data.
63
Supplying Transactions
Transaction Data might be read from a Transaction Table or from a Flat-File.
Source Access - Transaction Table
1.
A Transaction Table is an SQL accessible table named IDS_UPD_SYNC_TXN held in the source database. It
holds information about inserts, updates, and deletions from USTs.
2.
The information in the table records the order in which these events occurred, together with primary key
values of the affected source rows.
3.
MDM Registry Edition permits the separation of USTs and IDTs on different databases. All updates to USTs
are logged in a Transaction Table residing in the source database to prevent distributed database updates
when source rows are modified.
64
If you plan to synchronize using flat files the UST must be sourced from a flat file as well. See the sourced_from
clause in the DESIGN GUIDE for the appropriate syntax. See the Transaction File section for more details about
the Flat-File layout.
NSA Transaction Table
There is an alternative to providing IDT rows in a Flat-File. The Synchronizer can also read transactions from an
SQL table known as the NSA Transaction Table. It is similar in content to a Flat-File. However, it has the
advantage that it does not need to be "closed" before passing it to the Synchronizer for processing. See the
Transaction File section for more details about the NSA Transaction Table.
Synchronizer Process
The Update Synchronizer process updates the IDT database. At startup, it connects to one of the following
components:
All source databases used by the specified System
A flat transaction file specified by the -f parameter
The target database (when using an NSA TransactionTable)
It periodically polls for work by reading the transaction table on each source database. This is known as a duty cycle. A
duty cycle can begin in one of two ways:
a specified period of time has elapsed since the last duty cycle (-tparameter), or
a new duty cycle commences immediately (without sleeping) if the previous cycle processed any transactions.
It processes a maximum of Rate transactions for each duty cycle for each source database before committing the
results. The default Rate of 100 can be changed using the -m parameter. This prevents any one source database from
monopolizing all of the Synchronizers time at the expense of less active source databases.
If the only source is a flat transaction file, the Synchronizer shuts down automatically when it reaches EOF.
Although designed to be a near real-time process, delays in synchronization are possible for multiple reasons:
USTs are updated while the IDT is still being loaded (that is, the MDM-RE-ID Table and Indexes do not exist
yet)
the USTs and IDTs are on different databases and the network link is down.
the Synchronizer process is not running while updates occur.
In these situations, any updates to the USTs are logged and reapplied at a later stage (when using a Transaction
Table).
Synchronizer Utilities
You can use the following Update Synchronizer utilities:
updmulti
You can use the updmulti utility to synchronize with an IDT in the following scenarios:
If the IDT uses triggers as the transaction source
If you apply updates to the IDT by using the Real Time API or the Real Time Web Service
The updmulti utility improves the synchronizer performance when it handles many IDT updates.
updsync
The updsync utility is deprecated, and Informatica recommends that you use the updmulti utility to synchronize
IDTs.
Overview
65
updsync utility
The updsync is named as Update Synchronizer utility. This section provides information on how to start and stop this
utility.
Starting updsync
Start the updsync utility from the Console Client, use Tools > Synchronizer or start from the command line.
If you start it from the command line, be sure to specify the -5 switch to enable communication and control facilities
from the Console.
The command line syntax is:
For Win32:
%SSABIN%\updsync -rRulebase -pSystem -hRBHost:Port [Optional Switches]
For Unix:
$SSABIN/updsync -rRulebase -pSystem -hRBHost:Port[Optional Switches]
where
Rulebase
The name of Rulebase.
System
The name of the System to be synchronized.
RBHost:Port
The host name and port of the Rulebase Server. Note, this may be replaced with the -g parameter when using
Rulebase Server Groups.
Optional Switches
The following parameters are supported:
-cMaxCycles
Specifies the maximum number of duty cycles to run before shutting down. The default is to run until instructed to
shut down, see Stopping updsync.
-eIDT
Specifies that only transactions that affect the specified IDT will be processed. This permits the synchronization
of a single IDT when multiple IDTs have been defined in the System. The default (when -e has not been specified)
is to synchronize all IDTs in the System.
-fFlatFile
The name of the transaction file when using flat file synchronization.
-gRBSG
The name of the Rulebase Server Group. Refer to the Servers chapter for the full syntax.
-i[IDT[,IDX]]
Check the integrity of all IDTs and IDXs in this system, or a particular IDT and IDX. See the Integrity Checking
section for details.
-k
Display erroneous records in detail. Used in conjunction with -i.
66
-l
Assume case of system name in txn file/table matches the case of the system name specified with the -p
parameter. When not specified, a case insensitive (more expensive) select and compare mechanism is used.
Transactions stored by triggers in the txn table insert the system name in lower case.
-mRate
Commit rate (defaults to 100).
-n
Treats the transaction file as a text file where records are separated by a newline. Without this option, the
transaction file is interpreted as a binary file.
-oTime
Collect Optimizer statistics every Time seconds.
-tTimeOut
Specifies the number of seconds between duty cycles. The default value is 60 seconds. A value suffixed with ms
is treated as milliseconds.
-vpsui
Verbosity (p=progress, s=stats, u=usage, i=info)
-yMax[,Wait]
Fault tolerance feature. Synchronizer automatically restarts Max times in case of failure. For more information,
see the Restarting Automatically section.
-zTxn
Transaction sequence number to delete.
-50:host:port
Specifies that this job (number 0 = anonymous) is to connect to the Console Server on host:port and register
itself as an anonymous job (defined as a job not spawned by the Console). This enables Console progress
messages and the ability to shut down the Synchronizer from the Console.
--rbcheck
The Update Synchronizer periodically checks its communication channel to the Rulebase Server. Use --rbcheck
to stop the updsync utility when the Rulebase Server stops with a hard shutdown.
The -d option specifies the time duration to retry the connection to the Rulebase Server. If the MDM Registry
Edition system exceeds the time duration to retrieve connectivity, updsync utility quits the services.
When you start the updsync utility with rbcheck, -d, and -y options, the -d option overrides the -y option in the
case of rule base check failure.
--validate
Validates data when you synchronize the data with Identity Table (IDT) using a flat file or NSA table.
updsync utility
67
Validation
Numeric - N
Checks for a numeric value that aligns to the right and has leading zeros instead of
spaces.
Character String - C
Checks for spaces. Does not allow a null value (0x0000) as a padding character.
Unicode String - W
Checks if the Unicode spaces (0x0020) has padding. Does not allow a null value (0x0000)
as a padding character.
Use the --validate option to validate the data. The following validations are optional as the errors calculated
here are based on percentage of occurrence:
Field
Validation
Character String - C
Counts the number of rows where values in column are using full buffer. Reports an error
when 99% of data meets this condition. This may not be an error and could be due to data
truncation.
Unicode String - W
Counts the number of rows where values in column are using full buffer. Reports error when
99% of data meets this condition. This may not be an error and could be due to data
truncation.
Count the number of rows where values contains invalid Unicode spaces as padding
character, that is mix of endianess 0x2000 and 0x0020. The problem is 0x2000 is also valid
Unicode, so if the 75% or more rows are ending with 0x2000 character on a big endian system
or 0x0020 on little endian system, then report it as an error.
Count the number of rows where values contains ASCII spaces instead of Unicode spaces as
padding character, that is 0x2020 is used instead of 0x0020. Again the problem is 0x2020 is
also a valid Unicode, so if the 75% or more rows are ending with 0x2020 character then report
it as an error.
--se=host:port
Specifies the host and port number of the Search Server used to build and maintain Persistent-IDs. See
thePersistent-ID Chapter in the MDM-RE DESIGN GUIDE for details.
--persist=Multi-Search-Name
Specifies the name of the clustering strategy (Multi-Search- Name) that describes how to perform an initial
clustering. The Update Synchronizer will terminate normally, once the initial clustering has been created. This
parameter is not specified during normal synchronization. See the Persistent-ID Chapter in the MDM-RE
DESIGN GUIDE for details.
--local_flul_cache=n
Specifies the system to use local Link and Unlink rule cache when n=1. If the value is set to 0, then it uses the
search server cache. The default value is 1. See the Forced Link and Unlink rule Chapter in the MDM-RE
DESIGN GUIDE for more details.
Output goes to the console, so you can redirect it to a log file if you wish. Under Windows, you can start it like this:
start /min %SSABIN%\updsync -r%SSA_RBNAME% -p%SSA_SYSTEM% -vp -h%SSA_RBNAME%
Stopping updsync
You can stop this utility using the console or through script.
68
Via Console
The updsync can be shut down from the Console if it was started from
the Console, or
from a command prompt and the -5 switch was specified.
The Console sends a message to the Synchronizer to "stop when the next duty cycle begins". The Synchronizer will
acknowledge the receipt of the shutdown request by displaying a progress message and will shutdown in due
course.
Via Script
Alternatively, you may schedule the Synchronizer to shut down by running the following script to add a Shutdown
Request to the transaction file. It will not shut down until it processes the request. This may take a while if there is a
backlog of transactions to process. Therefore it is recommended that the Synchronizer be shut down via the
Console.
For Win32:
%SSABIN%\syncstop System Uid Pwd Svc [DBType]
For Unix:
$SSABIN/syncstop System Uid Pwd Svc [DBType]
where
System
The name of the System being synchronized.
Uid
The SSA userid defined for UST database.
Pwd
The password for the SSA userid defined for UST database.
Svc
The name of the UST database.
DBType
An optional database type of the UST database specified when the environment variable SSA_DB_TYPE is not
set. Specify ora, udb, myq or msq.
The Update Synchronizer will shut down when the next duty cycle begins.
UDB/DB2: The Win32 syncstop script must be run from a DB2 Command Window.
Note: The syncstop script cannot be used to stop a Synchronizer that is processing transactions from the NSA table.
The only supported mechanism in this case is to use the Stop button on the Console, or the --rbcheck switch.
Server Shutdown
The MDM Registry Edition servers will not shut-down when clients are attached, unless the hard shutdown option is
used.
updmulti utility
This section provides on how to use the updmulti utility.
updmulti utility
69
Prerequisites
updmulti is a client of the Real Time Web Service. Therefore, the Synchronization Server must be running and the
Real Time Web Service must be configured appropriately for the IDT to be synchronized. See the Enabling the Real
Time Web Service for details.
Starting updmulti
updmulti can be started from the Console Client (Tools > Synchronizer). If it is started in this way, then the options
--multi and --se= must be specified in the Extra Options field of the Update Synchronizer dialog. The --se=parameter
nominates the Search Server to be used.
Alternatively, it may be launched from the command line. If the command line method is used, be sure to specify the -5
switch to enable communication and control facilities from the Console.
The command line syntax is:
For Win32:
%SSABIN%\updmulti -rRulebase -pSystem -hRBHost:Port -eIDT --se=SEhost:port [Optional Switches]
For Unix:
$SSABIN/updmulti -rRulebase -pSystem -hRBHost:Port -eIDT --se=SEhost:port [Optional Switches]
where
Rulebase
The name of Rulebase.
System
The name of the System to be synchronized
IDT
Specifies the IDT which will be processed. This IDT must be present in the specified system.
70
RBHost:Port
The host name and port of the Rulebase Server. Note, this may be replaced with the -g parameter when using
Rulebase Server Groups.
SEHost:Port
The host name and port of Search Server used to run searches.
Optional Switches
The following parameters are supported:
-cMaxCycles
Specifies the maximum number of duty cycles to run before shutting down. Not relevant for Flat-File input. The
default is to run until instructed to shut down (see Stopping updmulti).
-fFlatFile
The name of the transaction file when using flat file synchronization
-gRBSG
The name of the Rulebase Server Group. Refer to the Servers chapter for the full syntax.
-i[IDT[,IDX]]
Check the integrity of all IDTs and IDXs in this system, or a particular IDT and IDX. See the Integrity Checking
section for details.
-k
Display erroneous records in detail. Used in conjunction with -i.
-l
Assume case of system name in txn file/table matches the case of the system name specified with the -p
parameter. When not specified, a case insensitive (more expensive) select and compare mechanism is used.
-mRate
Commit rate (defaults to 100). This parameter is relevant for flat-file synchronization only. Determines how
frequently 2 phase commit records are saved.
-n
Treats the transaction file as a text file where records are separated by a newline. Without this option, the
transaction file is interpreted as a binary file.
-oTime
Collect Optimizer statistics every Time seconds.
-tTimeOut
Specifies the number of seconds between duty cycles. The default value is 60 seconds. A value suffixed with ms
is treated as milliseconds.
-vpsui
Verbosity (p=progress, s=stats, u=usage, i=info)
-yMax[,Wait]
Fault tolerance feature. Synchronizer automatically restarts Max times in case of failure. For more information,
see the Restarting Automatically section.
-zTxn
Transaction sequence number to skip.
updmulti utility
71
-ZTxn
Transaction sequence number to delete.
-50:host:port
Specifies that this job (number 0 = anonymous) is to connect to the Console Server on host:port and register
itself as an anonymous job (defined as a job not spawned by the Console). This enables Console progress
messages and the ability to shut down the Synchronizer from the Console.
--offset=nnn
This is an optional parameter which applies to flat-file processing only. This number, if present, is added to the
sequence number of each record processed. May be used to ensure global uniqueness of flat-file transactions.
--rbcheck
Requests periodic checks of Rulebase Server connectivity and to abort when inaccessible. Under normal
circumstances, updmulti accesses the RB Server very seldom, and is therefore unaware that it may have
stopped. This option is useful to automatically stop updmulti when the servers have been stopped with a hard
shut down.
--validate
When synchronizing data using flat file or NSA table to Identity Table.
By default, updmulti performs the following validation checks:
Field
Validation
Numeric - N
Checks for a numeric value that aligns to the right and has leading zeros instead of
spaces.
Character String - C
Checks for spaces. Does not allow a null value (0x0000) as a padding character.
Unicode String - W
Checks if the Unicode spaces (0x0020) has padding. Does not allow a null value (0x0000)
as a padding character.
Use the --validate option to validate the data. The following validations are optional as the errors calculated
here are based on percentage of occurrence:
Field
Validation
Character String - C
Counts the number of rows where values in column are using full buffer. Reports an error
when 99% of data meets this condition. This may not be an error and could be due to data
truncation.
Unicode String - W
Counts the number of rows where values in column are using full buffer. Reports error when
99% of data meets this condition. This may not be an error and could be due to data
truncation.
Count the number of rows where values contains invalid Unicode spaces as padding
character, that is mix of endianess 0x2000 and 0x0020. The problem is 0x2000 is also valid
Unicode, so if the 75% or more rows are ending with 0x2000 character on a big endian system
or 0x0020 on little endian system, then report it as an error.
Count the number of rows where values contains ASCII spaces instead of Unicode spaces as
padding character, that is 0x2020 is used instead of 0x0020. Again the problem is 0x2020 is
also a valid Unicode, so if the 75% or more rows are ending with 0x2020 character then report
it as an error.
72
When you use the --validate option and it results in errors, the data cannot not be rolled back. It is
recommended to use this option in a test environment. Ensure that the input data has correct Unicode spaces.
--reader_sz=nnn
Size of reader circular buffer size. The default value is 5000.
--se=host:port
Specifies the host and port number of the Search Server used to build and maintain Persistent-IDs. Refer
Persistent-ID chapter in the MDM-RE DESIGN GUIDE for details.
--persist=Multi-Search-Name
Specifies the name of the clustering strategy (Multi-Search- Name) that describes how to perform an initial
clustering. The Update Synchronizer will terminate normally, once the initial clustering has been created. This
parameter is not specified during normal synchronization. Refer Persistent-ID chapter in the MDM-RE DESIGN
GUIDE for details.
Output goes to the console, so you can redirect it to a log file if you wish. Under Windows, you can start it like this:
start /min %SSABIN%\updmulti -r%SSA_RBNAME% -p%SSA_SYSTEM% -vp -h%SSA_RBNAME% --se=%SSA_SEHOST%
Stopping updmulti
This section describes about how to stop the updmulti utility.
Via Console
updmulti can be shut down from the Console if it was started from either
the Console, or
from a command prompt and the -5 switch was specified.
The Console sends a message to updmulti to c"stop when the next duty cycle begins". updmulti will acknowledge
the receipt of the shutdown request by displaying a progress message and will shutdown in due course.
Server Shutdown
The synchronizer will periodically check its communication channel to the Rulebase Server when started with the -rbcheck switch. When the RB server stops for any reason (for example, due to a hard shutdown), updsync will
terminate with an error condition.
Note: MDM-RE servers will not shut-down when clients are attached, unless the hard shutdown option is used.
Restarting Automatically
The Synchronizer has the ability to restart itself automatically in case of failure. This feature should be used carefully
as it is undesirable to attempt a restart when the previous failure was caused by as a non-transient error, such as a
database instance failure or a Tablespace running out of room.
Automatic restarts are enabled using the -y switch:
-yMax[,Wait]
Restarting Automatically
73
where
Max
This is a positive number and represents the maximum number of restart attempts. A value of zero is treated as "unlimited".
Wait
This is optional and represents the number of seconds to wait before attempting a restart. This can be used as a throttling
mechanism to prevent many restart attempts in quick succession. The default value is 0.
We recommend the values -y10,60. If updsync fails to restart after this many attempts, the error is unlikely to be
transient and requires investigation and correction.
Synchronization Level
The Synchronizer operates most efficiently when the nominated primary keys (PKn notation) are guaranteed to be
unique. It is advisable that the User Source Tables are defined with integrity constraints to ensure this fact. However,
in cases where this is not possible, a Synchronization Level can be specified which allows the Synchronizer to
tolerate, or even expect duplicates.
The following synchronization levels may be specified:
Synchronization Level
Check on Load
Check on Sync
On Sync Error. . .
REJECT_DUPLICATE_PK
Yes
Yes
Stop / Ignore
REPLACE_DUPLICATE_P
K
Yes
Replace row
WARN_DUPLICATE_PK
No
Yes
Issue Warning
ALLOW_DUPLICATE_PK
No
No
N/A
The default level is REJECT_DUPLICATE_PK. This specifies that an IDT cannot be loaded when duplicates are present.
Rows containing duplicate PKs will not be added to the IDT, but may exist on the UST (where the Synchronizer has no
control over them). Customers requiring duplicate protection of their source tables should use database constraints to
prevent creating duplicates. The synchronization process operates most efficiently in this mode.
If only a few duplicates are present and/or you do not want the Synchronizer to stop when a duplicate is detected, use
WARN_DUPLICATE_PK. This setting will process transactions less efficiently than REJECT_DUPLICATE_PK but will produce
correct results even when duplicates are present. In cases where a duplicate is detected it will issue a warning and
continue.
If the PK is known to be non-unique specify ALLOW_DUPLICATE_PK. This informs the Synchronizer to use algorithms that
produce correct results when duplicates are present. However, this mode is less efficient than REJECT_DUPLICATE_PK.
This mode must be used when the PK may contain NULL values.
The synchronization level REPLACE_DUPLICATE_PK can only be used in conjunction with an NSA transaction source. An
add transaction (type A) containing a duplicate PK value will replace the existing IDT row with the new value from the
NSA Transaction Table.
74
Reject_Duplicate_PK
Correct synchronization relies on the ability to uniquely identify User Source PKn Tables records. A User Source
Table Definition nominates the source table column(s) that are used to create a unique primary key [with the (PKn)
notation].
When loading the IDT, the host DBMS will check the PK columns for unique values. The MDM-RE Table Loader will
fail with an appropriate error messages if the USTs contain any duplicates. Therefore it is advisable that User Source
Tables are defined with constraints to avoid this potential problem.
Without constraints on the columns, it is possible for a user transaction to create a duplicate PK value via an insert or
update to a UST. The Synchronizer will detect this situation when attempting to add the same record to the IDT. A new
row with a duplicate PK will not be added to the IDT.
If the new "duplicate" row is not identical to an existing row (excluding PK values), updsync will report the situation with
an error message that looks something like this:
constraint violated by insert/update to UST
IDT IDS_01_IDT01
UST Key field(s): SSA09.TESTX01A.EMPNO
PK1 99
Note: Identical duplicate rows are not added to the IDT and not reported as duplicates, as there are some situations
where a specific transaction order may produce rows that appear to be duplicates when in fact, they are not.
The example above tells us that a transaction was applied to an IDT called IDS_01_IDT01. The PK field for this IDT
contains values extracted from a User Source Table column called SSA09.TESTX01A.EMPNO and we have attempted to
add a duplicate value of 99.
The Synchronizer will roll back the transaction(s) updated during the current duty cycle and terminate with the above
message. Manual intervention is required to
repair the UST integrity problem (remove the duplicate), and
inform the Synchronizer to delete the problem transaction.
Synchronization Level
75
The recommended procedure is to start the Synchronizer with the -m1 parameter. This will commit updates after every
successful transaction is processed and rollback/terminate when the "duplicate transaction" is reprocessed leaving it
at the head of the transaction queue.
Then start the Synchronizer with the following parameters to delete the "duplicate transaction", commit it and
shutdown the Synchronizer:
-zTxn -m1 -c1
where Txn is the transaction sequence number of the failed transaction. You can now restart the Synchronizer with its
normal parameters.
Flat-File Layout
The "flat file" is a binary file containing fixed length records (with no newline separators). It must start with a Control
Record. The Control Record is immediately followed Transaction Records. Each Transaction Record consists of a
fixed length header followed by an IDT record.
Alternatively, the transaction file can be treated as a text file when the Synchronizer is started with the -n switch. In text
mode, the Control Record and all Transaction Records must be separated by a newline character. Text mode is only
suitable when the IDT records do not contain any binary data that may be confused with a newline. A binary input file is
the preferred and safest option.
Control Record
Offset
Length
Description
Version
32
System Name
36
32
Time Stamp
68
64
Version
Defines the version of the Control Record. The only valid value is "0001".
System Name
Defines the System that these transactions belong to. Only one System per transaction file is permitted.
Time Stamp
An alphanumeric string containing the date and time when the file was created. The Synchronizer saves this field
in its restart information. Format is "YYYYMMDD HH:MM:SS" without the quotes.
Reserved
This is not used currently.
76
Transaction Record
Offset
Length
Description
10
Sequence Number
10
Operation Code
11
32
IDT Name
43
variable
IDT Record
Sequence Number
The Transaction Sequence Number represented by printable decimal digits. The input file must contain
ascending sequence numbers (right justified and zero filled) starting from 0000000001, without any gaps in the
sequence numbers.
Operation Code
Defines the operation to be applied. Valid values are A meaning add this IDT record, and D meaning delete this
IDT record.
IDT Name
The name of the IDT that this record belongs to. This is the fully decorated table name as it appears on the target
database. For example an IDT named IDT-99 in the definition file stored on dbid 01, would be called
IDS_01_IDT_99.
IDT Record
The IDT record in MDM-RE database format. Fields must be in the same order as defined in the UST-Definition
Section of the SDF file. Refer to the Formats and Data Types section of the DESIGN GUIDE for a description of
the MDM-RE database field types.
Flat-File Rules
The transaction file must be closed by the creating application prior to being used as input to the Synchronizer. The
content of the transaction file must not be changed once the update Synchronizer has started using it. Once all
transactions have been processed successfully, as verified by inspection of the updsync output, the file may be
deleted.
The Synchronizer uses the Transaction File Name appended to the System Name to store restart information (like the
Time Stamp). When the Synchronizer restarts, it checks the Time Stamp in the Control Record against the stored
value. If they differ it reports a "loss of synchronization error" and aborts. This is because the contents of the input file
has changed since it was first used.
Restart information is never removed. This is a safeguard against accidental reapplication of the same transaction file.
If this were to occur, the Synchronizer will recognize that it has completed processing the file and ignore the
transactions.
Since restart information is not removed, Transaction File Names can not be reused. The best approach is to generate
file names from the current date and time such that each one is unique. This also helps to identify which one is to be
applied next (as transactions must be applied in chronological order).
There is no operation code for an update. Updates are processed using the trigger paradigm. That is, an "update"
consists of two transactions; a delete transaction (containing a copy of the IDT record prior to the "update"), followed
by an add transaction (containing a copy of the IDT record after the "update").
77
Special handling is required for non-unique PKs. The Synchronizer will delete all records with the same PK value
when processing a Delete transaction (as it does not distinguish between them). The user must re-add other records
that should have not been deleted (if desired).
The IDT layout must be specified in the UST-Definition Section of the SDF file and not the Files- Definition. The latter is
used for unsynchronized flat-file input. Refer to the User Source Table section of the DESIGN GUIDE.
Max Length
Description
SYSTEM
32
System Name
SEQ
32
Transaction Sequence
OP
Operation Code (A or D)
IDT_NAME
32
IDT Name
IDT_REC
DBMS
The SystemName, Operation Code, IDT Name, and IDT Record are identical to those already described in the FlatFile Layout.
Transaction Sequence uses different semantics. In the NSATT it is not a number but an alphanumeric string. SEQ is
implemented as a VARCHAR column and therefore its ordering is determined by the collation order of the DBMS.
It is critical that the sequence number of a newly added row is greater than the sequence number of all rows already in
the table. Failing to do so may lead to incorrect synchronization results.
Note: The syncstop script cannot be used to stop a Synchronizer that is processing the NSA TT. The only supported
mechanism is the Stop button on the Console.
Integrity Checking
The Update Synchronizer can be used to check the integrity of the IDT. When started with the -i switch, updsync will
compare the current contents of the User Source Tables against the current state of the IDT and report any
differences. It can also check the integrity of the IDT vs IDXs.
This process does not take into account the following anomalies that might cause an incorrect error report:
unapplied transactions held in the Transaction Table
updates to the UST that have occurred while opening the cursors that reads it.
Therefore any errors reported may be transient. The best way to check is to run the Update Synchronizer to process all
known updates and run the integrity checker a second time to see if the errors are transient.
Note: The IDT vs IDX integrity check confirms that every IDT row has at least one IDX entry. If the IDX has been built
with the NO-NULL-KEY option, some IDT rows may not have a corresponding row in the IDX as they generated NULL
keys. The integrity checker flags this case as an error when in reality no error exists.
78
Syntax
The integrity checker is invoked with the -i switch:
-i[IDT[,IDX]]
If -i is specified without an IDT nor IDX name, it will check all IDTs within the System, and all IDXs against each
IDT.
If an IDT name is provided, that specific IDT will be checked against all IDXs.
If an IDT and IDX name is provided, only that specific IDT/IDX combination will be checked.
The optional -k switch can be used to display detailed (field level information) for any erroneous records.
Performance
Update Synchronization is inherently expensive because MDM-RE denormalizes the USTs in order to provide very
fast search performance. The disadvantage is that updates are slower. Conversely, had MDM-RE not denormalized
the data, the searches would be much slower and updates would be faster. This is a tradeoff in the design.
The following sections describe methods to optimize update performance.
Overlap Processing
Run one Synchronizer per IDT so that update processing is overlapped for multiple IDTs in a System (-e switch).
IDT/IDX Design
The design of each IDT directly impacts the Synchronizers performance. It can be improved by minimizing the use of
expensive features where possible:
reduce the amount of denormalization (the number of joins and especially the number of one:many joins).
use Flattening where possible.
avoid non-unique PKs
reduce the size of the IDT and IDX records by ensuring that only those columns required for key generation and
Network Issues
Reduce network overhead by running the Synchronizer and the Rulebase Server on the same machine as the
database server. If this is not possible, tune your network parameters to optimize throughput.
Performance
79
SQL*Net / Net8
The network packet size is controlled by the SDU parameter. The default value of 2048 is slightly too small to hold a
complete Transaction-Table record (2178 bytes). This causes packet fragmentation as the Server must send two
packets to the Client (updsync) to return each transaction.
Increase the SDU to at least 2200. A value of 3000 is recommended for Ethernet networks, as it is a multiple of
Ethernet frame size (1500 bytes).
Change $ORACLE_HOME/network/admin/listener.ora (on the server) to include the SDU parameter and stop/start the
listener using the lsnrctl utility. For example:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SDU=3000)
(GLOBAL_DBNAME= ssa16.)
(ORACLE_HOME= /home/oracle/u01/app/oracle/product/8.0.5)
(SID_NAME = dba)
You must also change the client side configuration file to specify a matching SDU, as the SDU is negotiated down to
the smallest value when the client connects to the server. Change $ORACLE_HOME/network/admin/tnsnames.ora to add
the SDU parm. For example:
ssa16 =
(DESCRIPTION =
(SDU=3000)
(ADDRESS = (PROTOCOL= TCP)(Host= ssa16)(Port= 1521))
(CONNECT_DATA = (SID = dba))
)
However on fast (low traffic) networks, this will only provide a minor performance boost.
A major improvement comes from specifying the TCP parameter NoDelay (assuming that TCP/IP is the protocol being
used). This tells TCP to flush buffers without waiting for them to fill. Modify (or create) $ORACLE_HOME/network/admin/
protocol.ora and add a line to it that specifies, tcp.nodelay=yes
Optimizer Statistics
Ensure that DBMS optimizer statistics are up-to-date. This is especially important if a batch job has added many new
transactions to the Synchronizers Transaction Table. Use the SQL ANALYZE command to update the Optimizers
statistics, or use the Synchronizers -o switch to regularly update statistics automatically.
analyze table ids_upd_sync_txn estimate statistics
The USTs and IDT/IDXs should also be analyzed regularly. The Table loader will automatically analyze the IDTs and
IDXs after they have been loaded.
Commit Rate
An appropriate commit rate needs to be selected by tuning.
In general, a high commit rate will provide better transaction throughput. However, too high a rate may cause the
database to run out of rollback space in a multi-user update environment, and updated records wont be visible to
searches for long periods. A database failure that interrupts Synchronization processing will mean more work will be
repeated when the Synchronizer is restarted.
A very low commit rate will cause frequent database I/O that slows down the Synchronization process.
The commit rate must tend toward a low value when multiple Synchronizers are running simultaneously against the
same database. High commit rates will create contention for the table that allocates the unique record numbers for
each IDT, causing lots of database I/O to maintain "read consistency".
80
Flat-File Synchronization
The two-phase commit table (IDS_2PC) is used to record the file-names of the files that have been applied. File-names
are not removed from this table, so that if an input-file is accidentally reused, the situation will be recognized and the
transactions will be ignored.
The consequence of this is that the table will grow at the rate of one row per input-file processed. The table is not
normally indexed in order to optimize update performance when very few rows are present (as is the case for usersource synchronization). As the number of rows grows, performance will slowly degrade. To avoid this problem,
create an index on the table:
CREATE INDEX IDS_2PC_I ON IDS_2PC (ID);
ANALYZE TABLE IDS_2PC ESTIMATE STATISTICS;
Timing Window
When the MDM-RE Table Loader creates an IDT it creates triggers on the User Source Tables, commits them and
opens a cursor to extract data from the USTs. A very small timing window exists between the commit and the opening
of the cursor.
If a user transaction starts, adds a new record and commits inside this window, the trigger is fired and an "add"
transaction is logged to the transaction table. The cursor used to unload the UST records will also see this new record
so it is added to the IDT as part of the initial load process. When the Synchronizer starts processing transactions and
attempts to "add" the same record it will detect that the record already exists and will terminate with a PK violation
error.
In the unlikely event that this happens, you may delete the transaction using the steps outlined in the Repairing a UST
section.
Timing Window
81
CHAPTER 7
Globalization
This chapter includes the following topics:
Overview, 82
Character Sets, 82
Database Support for UNICODE, 83
Binary Mode Utilities, 85
Loading IDTs, 85
MDM-RE Clients, 87
Debugging a Search, 88
Miscellaneous Tips, 89
Overview
This chapter deals with MDM-RE issues relating to multiple languages, character sets and UNICODE.
Each DBMS that MDM-RE supports handles those issues differently. This chapter discusses the issues in a general
way first and then presents DBMS specific issues.
Character Sets
A character set is used to represent all characters (or code points) in a language or script. The first character sets
were single byte, meaning that they could only define a maximum of 256 characters.
A code point is simply a binary value that represents a character in a character set. ASCII and EBCDIC are examples
of two single byte character sets that use different code points to represent the same set of characters. For example,
the code-point 0x41 represents the ASCII letter A but in EBCDIC, the same letter is represented by 0xC1.
Some complex scripts contain more than 256 characters, so they need to use multiple bytes to represent a single
character. The most common multi-byte character set is UNICODE.
The characters in a character set may be encoded in many ways. For example, a single byte character set could use a
7-bit or 8-bit encoding. A multi-byte character set could use a fixed width, variable width, or shift-sensitive variablewidth encoding.
82
UNICODE Encoding
UNICODE supports three main encodings:
UCS-2 a 2 byte fixed width encoding.
UTF-16a 2 byte fixed width encoding. In order to increase the range of characters that can be represented, a character
may be followed by a supplemental character increasing the length to 4 bytes.
UTF-8 a variable length encoding ranging from 1 to 4 bytes in length. 7-bit ASCII characters are represented by a
single byte in UTF-8 and use the same code-points. Therefore ASCII characters are indistinguishable from their
UTF-8 encoded, Unicode counterparts.
Microsoft Windows
On Windows operating systems your Locale determines the ANSI character set used for rendering text in GUI
applications. The corresponding OEM character set is used by console applications (those that run in a DOS Box). For
example, U.S. English uses ANSI code page 1252 and OEM code page 437.
The Locale also determines the way numbers, currency, time and dates are displayed. The Locale is set using the
Regional Options/Setting dialog, which is accessible from the Control Panel.
Note: The Input Locale (as distinct from the Locale) determines your keyboard to character setting mapping.
MS-DOS Box
In order to render characters using different Locales from within an MS-DOS Box, select a True Type font. Raster
Fonts cannot be used.
OEM code pages can be set explicitly with the chcp utility from within a DOS Box. For example:
C:\>chcp /?
Displays or sets the active code page number.
CHCP [nnn]
nnn Specifies a code page number.
Type CHCP without a parameter to display the active code page number.
C:>chcp
Active code page: 437
83
Column Level Some databases allow individual columns in a table to be defined as UNICODE, while others are not.
The UNICODE data types are usually preceded by the letter N (for National). For example NCHAR, NVARCHAR,
NCLOB, etc.
Oracle
Oracle Database
UNICODE support for Oracle databases may be implemented in two ways by defining:
the database character set as UTF8 so that UTF-8 encoded characters may be stored in all CHAR data types
AL16UTF16.
The following SQL*Plus script can be used to determine how the database was configured:
select parameter, substr(value,1,20) from NLS_DATABASE_PARAMETERS;
PARAMETER
SUBSTR(VALUE,1,20)
------------------------------ ------------------------------NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
NLS_CURRENCY
$
NLS_ISO_CURRENCY
NLS_NUMERIC_CHARACTERS
.,
NLS_CHARACTERSET
UTF8
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD-MON-RR
NLS_DATE_LANGUAGE
AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT
HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXF
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZH:T
NLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXF
NLS_DUAL_CURRENCY
$
NLS_COMP
BINARY
NLS_NCHAR_CHARACTERSET
UTF8
NLS_RDBMS_VERSION
8.1.7.0.0
18 rows selected.
Oracle Client
Although Oracle can store data as UNICODE characters, the client application may not be aware of this because data
are converted upon retrieval. The environment variable NLS_LANG defines the character set of the database client.
This character set is not necessarily UNICODE, although UNICODE is a valid option. NLS_LANG has the format X_Y.Z
where
X is the value of NLS_LANGUAGE
Y is the value of NLS_TERRITORY, and
Z is the value of NLS_CHARACTERSET
84
Chapter 7: Globalization
server. But if the client and database are configured to use the same character set, no conversion is performed. This
makes it possible to store multi-byte characters within CHAR/VARCHAR columns without interference from the DBMS.
UDB
For UDB, the database must be created as a UNICODE database. By using code set utf-8, Unicode data will be stored
in UTF-8 form.
The easiest way to check that this is the case is with the following command:
db2 get database config for mydb
The response will be something like:
= 0x0a00
= 61
= 0x0a00
= AU
= 1208
= UTF-8
The data file used by the load process will be in UTF-16 which will be converted to UTF-8 by UDB.
Loading IDTs
The MDM-RE Table Loader generates DBMS load files in delimited text format by default. Specify the LoaderDefinition option FIXED to generate fixed length binary files instead.
To verify that the input data has been read and processed properly, you may specify the Loader- Definition option
Keep-Temp. This will prevent the DBMS loader files from being deleted after the load completes so that they may be
examined.
85
Flat-File Input
If input data is read from a flat-file, make sure that
the file contains fixed length records
FORMAT=Binary is specified in the Logical-File-Definition
the format of the input records matches the Input-View
the record length is the sum of the field lengths in the View
MSQ
Data loaded from a flat-file into CHAR or VARCHAR columns will be translated from the clients code page into UNICODE,
transferred to the server and then translated into the servers code page and stored.
The clients code page should be identical to the servers code page, otherwise the conversion could be lossy.
If the character set of the data file does not match the clients code page (Locale) specify the DATABASEOPTIONS=
IDTCP parameter to specify the code page of the data.
Oracle
A safe approach is to use a UNICODE character set for the database and to specify a UNICODE character set for the
client (MDM-RE Servers and utilities). MDM-RE automatically requests UNICODE data to be returned as
UTF-16 .This ensures that no lossy conversions are performed when reading/writing data to/from the database.
The mass loader file generated by the Table Loader will automatically use a Fixed length format when UNICODE
columns are present.
MSQ
NCHAR and NVARCHAR columns are not converted. They remain in UNICODE format.
86
Chapter 7: Globalization
MDM-RE Clients
Custom Search Client
The search API ids_set_encoding is used to inform the Search Server of the encoding used by the client application
for UNICODE columns (data type W).
If an encoding has been specified that is different to the encoding used by the Search Server (UTF-16), the search
data will be converted prior to searching and similarly, prior to the return of the result set.
UTF-16 UTF-8 conversions occur on the machine running the Search Server. UTF-16 data is assumed to be encoded
in the byte order of the Search Servers machine.
Note: If the search client requests UTF-16 data (the default for W columns), they will be encoded using the native
byte order of the Search Server, which may be different to the byte order of the client machine.
Oracle
Oracle W fields are stored as UNICODE in the databases national character set using NCHAR/NVARCHAR2 data types.
Upon retrieval by the Search Server the data is converted to UTF-16 (if necessary). If the callers search data is
encoded differently, the caller must call ids_set_encoding to inform the Search Server.
MSQ
MDM-RE stores and retrieves data for W fields as UNICODE characters encoded as UTF-16. If the callers search
data is encoded differently, the caller must call ids_set_encoding to inform the Search Server.
For example, if the clients search data is encoded as UTF-8 the Search Server will convert incoming data from UTF-8
to UTF-16, perform a search and translate the search results back to UTF-8.
Relate
The batch search client relate will need to read the input file in binary mode (-b switch). Make sure that the input file
contains fixed length records matching the input view length (-i switch).
The output is written in binary mode when -b is specified with fixed length records of IDT record length, plus any
header information. The -o switch determines the exact layout.
You may wish to add newlines to the output by specifying -t. This will make the output easier to view in a text editor,
but it is only useful if the binary data does not contain any newline characters; otherwise output lines will be split.
The search trace facility is enabled with the --3 switch. It automatically detects non-printable characters when
processing the Search and File records and will log them in hexadecimal format when necessary.
Search records should use UTF-16 for W columns. If they use UTF-8, specify the -e switch to inform the Search
Server of the encoding used for the input fields.
Synchronizer
The Update Synchronizer can handle binary data in CHAR/VARCHAR2 columns with one exception: columns defined as
Primary Keys (PK) must not contain the NUL (binary zero, 0x00) character.
Columns of type W cannot be used as PK fields.
MDM-RE Clients
87
SSA-NAME3 V2
When indexing or searching a field containing Unicode, specify Key-Logic and Search-Logic Controls to inform SSANAME3 that UTF-16 data is present:
Controls ("UNICODE_ENCODING=6")
Debugging a Search
UNICODE data is notoriously difficult to handle. It requires an intimate knowledge of the data and micro-management
of the search process to avoid inappropriate conversions and to request conversions when necessary.
Batch Searches
The most reliable approach to debugging a new search is to use a batch search client such as relate. A batch client
has several advantages over an online search client:
the input file can be viewed and/or manipulated with a hex editor, so you have precise control over the input
data.
search records read from a file are not subject to conversions performed by the Operating System. Use fixed length
records and specify -b to read the file in binary mode. This avoids characters being interpreted as CR/LF and being
converted to LF.
only server side tracing is necessary to verify the search process.
Online Searches
In contrast, an online search client has less control over the input data because the Operating System may perform
unexpected conversions while the data is entered:
If the data is typed, the characters that end up in the input buffer are dependent on the keyboard driver, language,
of the characters.
If you do decide to use the online client, make sure to use the MDM-RE 950 client and enable the client side logging
88
Chapter 7: Globalization
Miscellaneous Tips
Loading User Source Tables - Oracle
When loading data to User Source Tables, make sure that the input file contains fixed length records and instruct the
DBMS loader to read the file in binary mode.
For Oracle this is done with the FIX option. For example, if the input file contains fixed length records 16 bytes long
encoded as UTF-8, the following control file could be used:
LOAD DATA
CHARACTERSET AL32UTF8
LENGTH SEMANTICS BYTE
INFILE testx182.ut8 "FIX 16"
REPLACE
INTO TABLE TESTX182A
(
NAME
)
If the input file contains fixed length records 16 bytes long encoded as UTF-16, the following control file could be
used.
Note: The byte order must be specified so that SQL*Loader can convert it to match the DBMS Server machines byte
order, if necessary.
LOAD DATA
CHARACTERSET UTF16
LENGTH SEMANTICS BYTE
BYTEORDER LITTLE
INFILE testx182.u6l "FIX 16"
REPLACE
INTO TABLE TESTX182B
(
NAME
)
Miscellaneous Tips
89
An alternative is to use the DUMP function to display table data in hexadecimal format. This also displays the name of
the database character set used to store the column. For example,
select dump(ids_name,1016) from idt182;
DUMP(IDS_NAME,1016)
----------------------------------------------------Typ=1 Len=6 CharacterSet=AL16UTF16: 30,a0,30,a1,30,a2
Typ=1 Len=6 CharacterSet=AL16UTF16: 30,f0,30,f1,30,f2
dd
The dd utility can be used to add newlines to a file containing fixed length records. Use
dd InputFile OutputFile 0 RecLen -a -b
90
Chapter 7: Globalization
CHAPTER 8
Siebel Connector
This chapter includes the following topics:
Overview, 91
Configuring Siebel, 91
Configuring MDM-RE, 98
Overview
MDM-RE can be configured to load, synchronize and search against data stored in a Siebel 7.7 CRM application. This
chapter provides detailed instructions for integrating MDM-RE with Siebel.
Siebel application data is held in an Oracle, UDB or Microsoft SQL Server database. At a physical level, the data are
held in base tables. However, base tables are not accessed directly. Instead, Siebel provides a higher level of data
abstraction with its Object Manager (OM). The joins base tables to provide highlevel Integration Objects (IO) that the
user works with.
As Siebel prohibits the creation of triggers on base tables, MDM-RE treats Siebel as a No Source Access (NSA) style
of database. The fundamental unit of data that can be extracted or synchronized is an IO, which is mapped 1:1 to an
MDM-RE IDT.
To extract and synchronize data, the Siebel administrator must first define an IO using Siebel Tools. A matching IDTDefinition is created in an MDM-RE System.
MDM-RE provides a Siebel Workflow to extract data using the Object Manager. The workflow will query Siebel to
extract the IO data, encode them using XML and write them to a flat-file. This file can then be loaded into MDM-RE.
Synchronization workflows (activated by Run-Time Events) are provided to pass synchronization messages to MDMRE whenever an object has been added, deleted or modified. The messages are encoded as XML and sent over a
socket using HTTP to the MDM-RE XS Server. The XS Server stores transactions in the NSA Transaction Table, for
processing by the Update Synchronizer.
Configuring Siebel
The Siebel application must be configured using Siebel Tools. The following section describes the process.
91
section.
Import and Compile The MDM-RE Business Service.
Import, Deploy and Activate the MDM-RE Workflows. See the Workflows section.
Create an Action set for the Workflow. See Load Action Set section.
Create a Runtime Event associated with the Action Set. It is left to the user to decide what type event to use. The
user may for instance decide to create a MiniButton within an applet and invoke the Workflow based on this
button.
Synchronization Setup
Several Workflow processes are provided to synchronize changes to the BC with the MDM-RE IDT. These Workflows
must be invoked with the appropriate BC Events. The following steps outline what is required to set up this
synchronization process.
Create and Compile an appropriate Integration Object. See the Integration Object section.
Create an appropriate MDM-RE System to match your Integration Object. See the Configuring MDM-RE
section.
Import and Compile the MDM-RE Business Service.
Import, Deploy and Activate the MDM-RE Workflows. See the Workflows section.
Create Action Sets for the Workflows. See the Synchronization Action Sets section.
Create appropriate Run Time Events which use the Action Sets. See the Synchronization Run Time
Eventssection.
Reload Run Time Events.
Integration Object
The basic mapping of data contained in a Siebel Business Component (BC) to an IDT is through an Integration Object
(IO). A Siebel Integration Object will be set up with all the fields in the Business Component that are desired in the IDT.
Then the IDT can be set up to match the XML Tag names for the Integration Object. What follows is an example of an
XML message based on such an Integration Object.
The corresponding MDM-RE UST definition can be found in the Configuring MDM-RE section. You must always
include RowId as an active field in your IO as it will be used as the primary key in the IDT.
<?xml version="1.0" encoding="UTF-16"?>
<?Siebel-Property-Set EscapeNames="false"?>
<SiebelMessage MessageId="1-3HPY" IDS_OP="A" IDS_SYSTEM="testx218
IDS_IDT="IDS_01_CONTACT" MessageType="Integration Object"
IntObjectName="ISS IO Contact"
IntObjectFormat="Siebel Hierarchical">
<ListOfIssIoContact>
<Contact>
<Alias></Alias>
<BirthDate>01/14/1932 00:00:00</BirthDate>
<FirstName>Jean</FirstName>
<LastName>Murasawa</LastName>
<MiddleName></MiddleName>
92
</SiebelMessage>
<City></City>
<Country></Country>
<PostalCode>765048832</PostalCode>
<StreetAddress></StreetAddress>
<RowId>12-ZT80P</RowId>
</Contact>
</ListOfIssIoContact>
Error Handling
The Workflow ISSErrorHandler is used by all the MDM-RE Workflows to log errors to a file. The default for this log file
is /tmp/isserror.log. The file name may be changed by modifying the Workflow. Simply change the File Name value
for input in the Write to Error Log step.
Workflows
The MDM-RE Workflows can be found in the siebel/workflws directory of the MDM-RE installation. You will need to
import all 9 Workflows into Tools.
Note: You must import the workflows in order of their dependencies.
After importing, you may need to modify the ISSErrorHandler Workflow (See the Error Handling section). Then click
Deploy for each of the workflows. You will then activate them from the client by navigating to the Repository
Workflow Processes Screen.
Once you have click Activate on all the Workflows they can be found in the Active Workflow Processes list. More
detailed instructions on importing and activating workflows can be found in Siebels Bookshelf. The following is the list
of all the MDM-RE workflows.
MDM-RE Build Load File
MDM-RE Delete Record Sync
MDM-RE Launch Build Load File
MDM-RE Launch Delete Record Sync
MDM-RE Launch PreDelete Record Sync
MDM-RE Launch Write Record Sync
MDM-RE PreDelete Record Sync
MDM-RE Write Record Sync
MDM-REErrorHandler
There are dependencies between these Workflows. Siebel will issue validation warning and errors when deploying a
Workflow if any required Workflows are not already deployed or were not imported prior to importing the current
Workflow. You must import and deploy all required workflows first.
The dependancy of the Workflows are:
MDM-REErrorHandler is required by all other Workflows.
MDM-RE Launch Build Load File requires MDM-RE Build Load File.
MDM-RE Launch Delete Record Sync requires MDM-RE Delete Record Sync.
MDM-RE Launch PreDelete Record Sync requires MDM-RE PreDelete Record Sync.
Configuring Siebel
93
MDM-RE Launch Write Record Sync requires MDM-RE Write Record Sync.
94
Configuring Siebel
95
96
Profile Attributes
The following tables show the profile attributes used by the MDM-RE Workflows.
Attribute Name
Description
IDS_SYSTEM
IDS_IDT
IDS_IO_NAME
IDS_IO_ID
The Id of the primary business Component for the Integration Object, that is [Id]
IDS_URL
IDS_PAGE_SIZE
The page file size used by the EAI Siebel Adapter Business Service
IDS_LOADFILE
Attribute Name
Launch PreDelete
Record Sync
IDS_SYSTEM
Launch Write
Record Sync
Required
Required
Required
IDS_IDT
Required
Required
Required
IDS_IO_NAME
Required
Required
Required
IDS_IO_ID
Required
Required
IDS_URL
Launch Delete
Record Sync
Required
Required
IDS_PAGE_SIZE
Optional
IDS_LOADFILE
Required
Configuring Siebel
97
Configuring MDM-RE
Having defined IOs using Siebel Tools, we must now create an MDM-RE System containing equivalent IDTs.
System Definition
Data will be loaded from a Flat-File containing XML messages. Define an IDT in the User-Source-Tables section of the
SDF for each IO.
All field names must correspond to the names of the fields in the IO. Any fields present in the IO but not listed in the
otherwise NOSYNC.
Specify the Siebel RowId as the primary key (PK).
The Logical-File-Definition describing the flat file must specify FORMAT=XML and VIEW=<IDTName>1(the IDT name
Environment Variables
The following environment variables must be defined in the environment used to start MDM-RE servers and
utilities.
SSA_XML_UTF16=1 this variable informs MDM-RE to output UTF-16 encoded Unicode into W columns when
converting data extracted from XML documents produced by Siebel. When set to zero it uses UTF-8. The default
(when not specified) is UTF-16.
SSA_XML_SIZE this variable specifies the size of the XML parsing buffer (in bytes) of the XS Server.
98
This should be at least as large as IDS_PAGE_SIZE * <max bytes per Siebel Msg>. The former is a Profile Attribute of
the ISSLaunchBuildLoadFile workflow and the latter is a function of the size and number of fields included in the
IO.
SSA_RBNAME this variable specifies the connection string for the Rulebase containing the System. Its format is
described in the Rulebase and Database Names section of this guide.
Loading Data
Invoke the MDM-RE supplied Workflow Process named Launch Build Load File to extract and write your Siebel data
to a XML File, see Constructing Load Data section. This file is used as flat-file input for the MDM-RE Table Loader
process, see Table Loader section.
Synchronization
In order to synchronize MDM-RE with updates to the Siebel application, the Siebel Administrator defines Run- Time
Events on the BCs that require synchronization. When the BCs are updated, Run-Time Events invoke Action Sets that
subsequently call MDM-RE Workflows to send XML messages to MDM-RE XS Server.
Upon receipt of an XML message, the XS Server parses it to determine the System and IDT that this messages
pertains to, and to locate the IO fields that are replicated in the IDT. An IDT record is constructed and stored in the NSA
Transaction Table (NSA TT). Refer to the Update Synchronizer chapter for details about this table and the
synchronization process in general.
Note: The order of message receipt at the XS Server defines the order in which transactions will be processed by the
Update Synchronizer.
XS Server
The Siebel HTTP Transport service is used to send XML messages to the MDM-RE XS Server. Unfortunately, the
service does not close its connection with the XS Server until the Siebel application user that initiated the connection
logs off the Siebel application.
Siebels failure to close its connections means that the XS Server will not shutdown until all Siebel clients log off.
Configuring MDM-RE
99
Restrictions
Siebel Restrictions
There must be one primary BC per IO.
An IO may not include any secondary BCs.
Run-Time Events do not capture batch updates to BCs, leading to a possible loss of synchronization.
Run-Time Events only trap data changes made by components. Changes made in the Data Manager level will not
column.
UDB Unicode is not currently supported. Only the ASCII subset of UTF-8 can be loaded.
100
CHAPTER 9
Web Services
This chapter includes the following topics:
Introduction, 101
MDM-RE Web Services, 101
XML Search Service, 102
XML Console Service, 112
NSA-Batch Service, 126
Real Time Web Service, 128
Notification Service, 137
UDDI, 143
Introduction
Web services are software that provide a standard means of interoperating between different applications, running on
a variety of platforms over a network. They are characterized by interoperability and extensibility, thanks to the use of
XML messages that follow the SOAP standard. They can be combined to produce a Service Oriented Architecture.
This guide describes these web services, and how to use them.
All MDM-RE web services are implemented as free-standing servers rather than as servlets. No web application
server like IBM Websphere Application Server (WAS), Microsoft BizTalk or Apache Tomcat is required.
101
SOAP
All MDM-RE web services use the Simple Object Access Protocol (SOAP). Both SOAP version 1.1 and SOAP version
1.2 are supported. A SOAP 1.1 request will receive a SOAP 1.1 response from the MDM-RE web services;
conversely, a SOAP 1.2 request will receive a SOAP 1.2 response.
Unicode
All MDM-RE web services use Unicode. Messages may be sent in UTF-8 or UTF-16. Responses will use the same
character set as the original request.
Enabling
The XML Search Server will not start unless it has been enabled and configured. The XML Search Server is enabled
by allocating the servers host name (SSA_XMHOST) and port number (SSA_XMPORT) in the env\isss.bat (Windows) or
env/isss (UNIX). The default port number of the XML Search Service Server is 1670.
Configuring
The configuration process consists of creating a simple text file named either xmserv.ini or xmserv.xml. The two
different extensions represent two different formats that the configuration file can take; an INI file form and an XML
form.
The file can be located in $SSAINI, $HOME or $SSABIN, which the server searches in that order.
The content of this file determines which searches and Rulebases are visible to the client. It is read at server
initialization, so changes to the configuration become effective only after the XML Search Server is restarted or
refreshed.
The xmserv.ini form has the same format as the htserv.ini file used by the HTTP Search Server. Refer to the HTTP
Search Client section of the OPERATIONS Guide for instructions on how to use this format.
Since this is a Web Service, the XML format is recommended.
Generic Mode
The simplest possible file contains the following lines:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/xmlserv">
<mode>generic</mode>
<rulebase>ids:rb</rulebase>
</server>
This simple xmserv.xml will make all searches in the Rulebase ids:rb available.
Unlike the HTTP Search Server, a Rulebase must be supplied to the XML Search server.
102
Note: Rulebase names are sent from the client to the server in the clear using the HTTP protocol. To avoid passing
database passwords, it is strongly recommended that xmserv.xml files should use Dictionary Alias names. If you did
not, the same file would look something like:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/xmlserv">
<mode>generic</mode>
<rulebase>odb:0:userid/topsecretpassword@dbserver6</rulebase>
</server>
Custom Mode
Custom mode is use to configure the Systems, Searches and Rulebases visible to the Web clients. A custom
xmserv.xml file will look something like this:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/xmlserv">
<mode>custom</mode>
<profile name="search profile">
<rule name="search rule">
<rulebase>ids:rb</rulebase>
<system>ssa001</system>
<search name="search name">
<sdf_search>name-search</sdf_search>
</search>
</rule>
</profile>
</server>
The example defines one profile but multiple profiles can be defined. Each may contain one or more rules. In this case,
there is just one rule. Each rule must have a corresponding definition that nominates the Rulebase name, System
name and any number of Searches (name-search in this example) that can be used by a client.
Suppose that we have a more elaborate xmserv.xml file like this:
<?xml version="1.0" encoding="utf-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/xmserv">
<mode>custom</mode>
<profile name="this same system">
<rule name="rule2">
<system>ssa001</system>
<search name="Name Search">
<sdf_search>name-search</sdf_search>
</search>
<rulebase>ids:rb2</rulebase>
</rule>
</profile>
<profile name="other system">
<rule name="rule3">
<system>ssa001</system>
<search name="Name Search">
<sdf_search>name-search</sdf_search>
</search>
<rulebase>ids:rb3</rulebase>
</rule>
</profile>
<profile name="this system">
<rule name="rule1">
<search name="Address Search">
<sdf_search>address-search</sdf_search>
</search>
<system>ssa001</system>
<search name="Name Search">
<sdf_search>name-search</sdf_search>
</search>
103
<rulebase>ids:rb</rulebase>
</rule>
</profile>
</server>
Here there are three rules, for three systems, all called ssa001, and probably identical, but perhaps residing in three
different rulebases. In this case, four WSDL files will be generated, called rule1.wsdl, rule2.wsdl, rule3.wsdl and
ssa001.wsdl. The ssa001.wsdl file will correspond to rule1. Each will have its own target namespace. That of
ssa001.wsdl will be http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc while rule1.wsdl,
rule2.wsdl, and rule3.wsdl will use the following namespaces:
http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc/rule1
http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc/rule2
http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc/rule3
Note: Two rules cannot have the same name. The server will issue an error.
WSDL
WSDL file
WSDL files are created in the server work directory for each rule and system defined in the xmserv.xml file when the
server starts or is refreshed.
The WSDL can also be accessed through the server at:
http://<xmhost>:<xmport>/?<system>.wsdl
Which will correspond to the last-named system of that name in the xmserv.xml file. For example, the sample system
will usually be found at:
http://localhost:1670/?ssa001.wsdl
The WSDL can also be retrieved from:
http://<xmhost>:<xmport>/?<rule>.wsdl
104
public
public
public
public
public
int score;
string ID;
string Name;
string DOB;
string Address;
105
Optional parameters:
LOGOUT
Filename for server output for this session.
LOGERR
Filename for server errors for this session.
LOGTEST
Filename for server search trace for this session.
WORKDIR
Used to inform the Search Server which directory is to be used as the working directory for this session.
Search_width
Specifies either Narrow, Typical or Exhaustive to nominate how many candidates should be selected.
Match_tolerance
Specifies either Conservative, Typical or Loose to nominate how aggressive the matching scheme should be in rejecting
candidates
Apache Axis2
An Apache Axis2 sample called Axis2Sample.java is included with the Java samples. If you have Apache Axis2
installed, and you paths and classpaths set up correctly, you can build a proxy with:
wsdl2java -uri ssa001.wsdl -d adb -s -p ssa001
Then compile it with:
javac ssa001/Ssa001Stub.java ssa001/Ssa001Fault.java
And compile the sample with:
javac Axis2Sample.java
SOAP request
The ws-sample1.cssample program will generate a SOAP 1.1 request that will look something like this:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<name-search xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc"
WORKDIR="d:\a2mi\ids\testx270.dir"
search_width="Typical" match_tolerance="Loose" system_name="ssa001">
<Name>J Smythe </Name>
<Address>157 cathy st</Address>
<DOB>19491231 </DOB>
</name-search>
</soap:Body>
</soap:Envelope>
106
SOAP response
The response takes the form of a SOAP envelope with an element in the body with the name of the search followed by
"_response". This contains a result element named after the IDT, with "Result" added which in turn contains the IDT
fields, plus an additional one called "score". All names are exactly as they appear in the System Definition File.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecuritysecext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd">
<soap:Body>
<name-search_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc">
<IDT001Result>
<IDT001>
<score>85</score>
<ID>1617</ID>
<Name>M J SMITH</Name>
<DOB>19491018</DOB>
<Address>4/157 CARTHAGE STREET</Address>
<CL_ID></CL_ID>
</IDT001>
<IDT001>
<score>70</score>
<ID>1647</ID>
<Name>JACK SMITH</Name>
<DOB>19201220</DOB>
<Address>22 BRUCE STREET</Address>
<CL_ID></CL_ID>
</IDT001>
(more...)
</IDT001Result>
</name-search_response>
</soap:Body>
</soap:Envelope>
107
<wsu:Expires>2010-03-30T04:03:40Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<Explain-name-search xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc"
match_tolerance="Loose" system_name="ssa001">
<Explain-name-search-search>
<Name>J Smythe </Name>
<DOB>19491231 </DOB>
<Address>157 cathy st</Address>
</Explain-name-search-search>
<Explain-name-search-file>
<Name>John Smithe </Name>
<DOB>19491231 </DOB>
<Address>157 cathy st</Address>
</Explain-name-search-file>
</Explain-name-search>
</soap:Body>
</soap:Envelope>
The response will look like this:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:wsa="http://www.w3.org/2005/03/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:MessageID>urn:uuid:631cb7e4-2e05-4e3f-b6a2-e0968da50e91</wsa:MessageID>
<wsa:Action>name-search</wsa:Action>
<wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To>
<wsa:From>
<wsa:Address>http://host:1665</wsa:Address>
</wsa:From>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-aacd0899-39ce-473f-b570-0e7d5c373e06">
<wsu:Created>2010-03-30T04:58:40Z</wsu:Created>
<wsu:Expires>2010-03-30T05:03:40Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<Explain-name-search_response xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/
searchSvc">
<Explain-Result Record-Type="0">
<Explain-Summary Parent-Sequence-Number="0" Sequence-Number="1">
<Score>92</Score>
<Decision>A</Decision>
</Explain-Summary>
</Explain-Result>
<Explain-Result Record-Type="1">
<Explain-Operator Parent-Sequence-Number="1" Sequence-Number="2">
<Type>03</Type>
</Explain-Operator>
</Explain-Result>
<Explain-Result Record-Type="2">
<Explain-Purpose Parent-Sequence-Number="2" Sequence-Number="3">
<Name>Person_Test</Name>
<Score>92</Score>
<Decision>A</Decision>
<Match-Level>Typical</Match-Level>
<Accept-Limit>89</Accept-Limit>
<Reject-Limit>70</Reject-Limit>
<Early-Exit-Taken>false</Early-Exit-Taken>
</Explain-Purpose>
</Explain-Result>
<Explain-Result Record-Type="4">
<Explain-Method Parent-Sequence-Number="3" Sequence-Number="4">
<Field-Name>Person_Name</Field-Name>
108
<Score>86</Score>
<Weight>400</Weight>
<Original-Weight>4</Original-Weight>
<Weight-Flag>W</Weight-Flag>
<Contributed>true</Contributed>
<Optional>false</Optional>
<Contribution>49</Contribution>
<Repeating-Field>false</Repeating-Field>
<Search-Index-Used>0</Search-Index-Used>
<File-Index-Used>0</File-Index-Used>
</Explain-Method>
</Explain-Result>
<Explain-Result Record-Type="5">
<Explain-Data Parent-Sequence-Number="4" Sequence-Number="5">
<Type>S</Type>
<data>John Smithe</data>
</Explain-Data>
</Explain-Result>
<Explain-Result Record-Type="5">
<Explain-Data Parent-Sequence-Number="4" Sequence-Number="6">
<Type>F</Type>
<data>J Smythe</data>
</Explain-Data>
</Explain-Result>
<Explain-Result Record-Type="4">
<Explain-Method Parent-Sequence-Number="3" Sequence-Number="7">
<Field-Name>Address_Line1</Field-Name>
<Score>100</Score>
<Weight>200</Weight>
<Original-Weight>2</Original-Weight>
<Weight-Flag>W</Weight-Flag>
<Contributed>true</Contributed>
<Optional>true</Optional>
<Contribution>28</Contribution>
<Repeating-Field>false</Repeating-Field>
<Search-Index-Used>0</Search-Index-Used>
<File-Index-Used>0</File-Index-Used>
</Explain-Method>
</Explain-Result>
<Explain-Result Record-Type="5">
<Explain-Data Parent-Sequence-Number="7" Sequence-Number="8">
<Type>S</Type>
<data>157 cathy st</data>
</Explain-Data>
</Explain-Result>
<Explain-Result Record-Type="5">
<Explain-Data Parent-Sequence-Number="7" Sequence-Number="9">
<Type>F</Type>
<data>157 cathy st</data>
</Explain-Data>
</Explain-Result>
<Explain-Result Record-Type="4">
<Explain-Method Parent-Sequence-Number="3" Sequence-Number="10">
<Field-Name>Date</Field-Name>
<Score>100</Score>
<Weight>100</Weight>
<Original-Weight>1</Original-Weight>
<Weight-Flag>W</Weight-Flag>
<Contributed>true</Contributed>
<Optional>true</Optional>
<Contribution>14</Contribution>
<Repeating-Field>false</Repeating-Field>
<Search-Index-Used>0</Search-Index-Used>
<File-Index-Used>0</File-Index-Used>
</Explain-Method>
</Explain-Result>
<Explain-Result Record-Type="5">
<Explain-Data Parent-Sequence-Number="10" Sequence-Number="11">
<Type>S</Type>
<data>19491231</data>
109
</Explain-Data>
</Explain-Result>
<Explain-Result Record-Type="5">
<Explain-Data Parent-Sequence-Number="10" Sequence-Number="12">
<Type>F</Type>
<data>19491231</data>
</Explain-Data>
</Explain-Result>
<Explain-Result Record-Type="1">
<Explain-Operator Parent-Sequence-Number="1" Sequence-Number="13">
<Type>04</Type>
</Explain-Operator>
</Explain-Result>
</Explain-name-search_response>
</soap:Body>
</soap:Envelope>
Refer to the Match Explain API section of the DEVELOPER GUIDE for a description of the meanings of these
fields.
110
Note: The servers will validate the security timestamp, if present. You may therefore need to ensure that your server
machines clock is accurate.
The response will be as follows:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://www.w3.org/2005/03/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecuritysecext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurityutility-1.0.xsd">
<soap:Header>
<wsa:MessageID>urn:uuid:38bfb6b5-ce10-4768-aaa9-852d1e55605f</wsa:MessageID>
<wsa:Action>name-search</wsa:Action>
<wsa:To>http://www.w3.org/2005/03/addressing/role/anonymous</wsa:To>
<wsa:From>
<wsa:Address>http://host:1670</wsa:Address>
</wsa:From>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-86d8102a-ed7f-4bea-bee1-dd17b8dc954a">
<wsu:Created>2009-07-10T01:00:31Z</wsu:Created>
<wsu:Expires>2009-07-10T01:05:31Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<name-search_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/searchSvc">
<IDT001Result>
<IDT001>
<score>85</score>
<ID>1617</ID>
<Name>M J SMITH</Name>
<DOB>19491018</DOB>
<Address>4/157 CARTHAGE STREET</Address>
<CL_ID></CL_ID>
</IDT001>
<IDT001>
<score>70</score>
<ID>1647</ID>
<Name>JACK SMITH</Name>
<DOB>19201220</DOB>
<Address>22 BRUCE STREET</Address>
<CL_ID></CL_ID>
</IDT001>
(more...)
</IDT001Result>
</name-search_response>
</soap:Body>
</soap:Envelope>
Samples
The sample ws-sample3.cs, which requires WSE 3.0, uses a supplied sample X509 RSA certificate to create a
message which is signed with private key. A copy of the X509 RSA certificate is included in the message.
The MDM-RE servers use the supplied public RSA key to validate the request.
111
WSDL file
A WSDL file is created in the server work directory when the server starts or is refreshed. The WSDL can also be
accessed through the server at:http://<cshost>:<csport>/?console.wsdl
For example, the sample system will usually be found at: http://localhost:1673/?console.wsdl
112
Description
ssacx_connect
Initiates a socket.
Parameters
Return Code
Description
Parameters
Return Code
ssacx_database_cre
ate
Create a new
database.
113
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_database_create_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_database_create_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_database_dele
te
Delete an existing
database.
Description
Parameters
Return Code
ssacx_disconnect
Releases
resources
allocated to a
socket.
none
Input message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_disconnect
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc "></ssacx_disconnect>
114
</soap:Body>
</soap:Envelope>
Output message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_disconnect_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_disconnect_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_errors_get_all
msg is an error
message.
Input message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_errors_get_all
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<msg_size>256</msg_size>
</ssacx_errors_get_all>
</soap:Body>
</soap:Envelope>
Output message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_errors_get_all_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
<msg>value</msg>
</ssacx_errors_get_all_response>
115
</soap:Body>
</soap:Envelope>
Web
Service
Description
Parameters
Return Code
ssacx_job_r
un
Input message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_run
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<job_name>value</job_name>
<job_report_size>256</job_report_size>
<work_directory>value</work_directory>
</ssacx_job_run>
</soap:Body>
</soap:Envelope>
Output message
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_run_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
<job_number>302</job_number>
<job_ report>value</job_ report>
</ssacx_job_run_response>
</soap:Body>
</soap:Envelope>
Web
Service
Description
Parameters
Return Code
ssacx_job_
start
Input message
<?xml version="1.0" ?>
<soap:Envelope
116
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_start
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<job_name>value</job_name>
<work_directory>value</work_directory>
</ssacx_job_start>
</soap:Body>
</soap:Envelope>
Output message
<?xml version="1.0" ?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_start_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
<job_number>302</job_number>
</ssacx_job_start_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_job_stat
us
Input message:
<?xml version="1.0" ?>
<soap:Envelope
xmlns:soap=" http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_status
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<job_name>value</job_name>
<job_number>301</job_number>
<job_report_size>256</job_report_size>
<work_directory>value</work_directory>
</ssacx_job_status>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_status_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
117
<response>0</response>
<job_status>0</job_status>
<job_report>value</job_report>
</ssacx_job_status_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_job_stop
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_stop
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<job_number>301</job_number>
<work_directory>value</work_directory>
</ssacx_job_stop>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_job_stop_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_job_stop_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_jobs_runni
ng
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_jobs_running
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc"></ssacx_jobs_running>
118
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0" ?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_jobs_running_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
<jobs_running>
<job_name>value</job_name>
<job_number>302</job_number>
<job_stepid>302</job_ stepid>
<job_progres sArray>
<job_progres s>value</job_progress>
</job_progres sArray>
</jobs_running>
</ssacx_jobs_running_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_rulebase_crea
te
Create a new
rulebase.
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_rulebase_create
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<rulebase_name>value</rulebase_name>
<work_directory>value</work_directory>
</ssacx_rulebase_create>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_rulebase_create_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_rulebase_create_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_rulebase_delet
e
Delete an
existing
rulebase.
119
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_rulebase_delete
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<rulebase_name>value</rulebase_name>
<work_directory>value</work_directory>
</ssacx_rulebase_delete>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_rulebase_delete_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_rulebase_delete_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_server_check
Check the
status of a
server
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_server_check
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<address>value</address>
</ssacx_server_check>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_server_check_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_server_check_response>
</soap:Body>
</soap:Envelope>
120
Web Service
Description
Parameters
Return Code
ssacx_server_flu
sh
Issue a flush
command to a
server
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_server_flush
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<address>value</address>
</ssacx_server_flush>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_server_flush_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_server_flush_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_server_sta
rt
Start a server
121
Web Service
Description
Parameters
Return Code
ssacx_server_sto
p
Stop a server
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_server_stop
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<address>value</address>
</ssacx_server_stop>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_server_stop_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc ">
<response>0</response>
</ssacx_server_stop_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Paramete
rs
Return Code
ssacx_servers_st
art
none
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_servers_start
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc"></ssacx_servers_star</
soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_servers_start_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
</ssacx_servers_start_response>
122
</soap:Body>
</soap:Envelope>
Web Service
Description
Paramete
rs
Return Code
ssacx_servers_st
op
none
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_servers_stop
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc"></ssacx_servers_stop>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_servers_stop_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
</ssacx_servers_stop_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_system_creat
e
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_create
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<rulebase_name>value</rulebase_name>
<database_name>value</database_name>
<system_name>value</system_name>
<work_directory>value</work_directory>
<sdf_name>value</sdf_name>
</ssacx_system_create>
</soap:Body>
</soap:Envelope>
123
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_create_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
</ssacx_system_create_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_system_delet
e
Delete an existing
database.
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_delete
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<work_directory>value</work_directory>
</ssacx_system_delete>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_delete_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
</ssacx_system_delete_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_system_impor
t
Create a system
from an export file
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
124
<soap:Body>
<ssacx_system_import
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<rulebase_name>value</rulebase_name>
<database_name>value</database_name>
<system_name>value</system_name>
<work_directory>value</work_directory>
<file_name>value</file_name>
</ssacx_system_import>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_import_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
</ssacx_system_import_response>
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_system_status_g
et
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_status_get
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<work_directory>value</work_directory>
<system_status_size>256</system_status_size>
</ssacx_system_status_get>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_status_get_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
<system_status>value</system_status>
</ssacx_system_status_get_response>
125
</soap:Body>
</soap:Envelope>
Web Service
Description
Parameters
Return Code
ssacx_system_status_s
et
Input message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_status_set
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<rulebase_name>value</rulebase_name>
<system_name>value</system_name>
<work_directory>value</work_directory>
<system_status>value</system_status>
</ssacx_system_status_set>
</soap:Body>
</soap:Envelope>
Output message:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ssacx_system_status_set_response
xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/consoleSvc">
<response>0</response>
</ssacx_system_status_set_response>
</soap:Body>
</soap:Envelope>
NSA-Batch Service
This is a web based Service which provides the ability to add records to the NSA Transaction table. The service is
implemented by the Synchronization Server, as part of the ssasrsv executable image.
126
Configuring
The configuration process consists of creating a simple text file named either xsserv.ini or xsserv.xml. The two
different extensions represent two different formats that the configuration file can take; an INI file form and an XML
form.
The file can be located in $SSAINI, $HOME or $SSABIN, which the server searches in that order.
The content of this file determines which searches and Rulebases are visible to the client. It is read at server
initialization, so changes to the configuration become effective only after the XML Search Server is bounced.
The xsserv.ini form has the same format as the htserv.ini file used by the HTTP Search Server. Refer to the HTTP
Search Client section of the OPERATIONS Guide for instructions on how to use this format.
Since this is a Web Service, the XML format is recommended.
Generic Mode
The simplest possible file contains the following lines:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/xsserv">
<mode>generic</mode>
<rulebase>ids:rb</rulebase>
</server>
This simple xsserv.xml will make all searches in the Rulebase ids:rb available.
Unlike the HTTP Search Server, a Rulebase must be supplied to the XML Search server.
Note: Rulebase names are sent from the client to the server in the clear using the HTTP protocol. To avoid passing
database passwords, it is strongly recommended that xsserv.xml files should specify Dictionary Alias names.
Custom Mode
Custom mode is use to configure the Systems, Searches and Rulebases visible to the Web clients. A custom
xsserv.xml file will look something like this:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-1/xsserv">
<mode>custom</mode>
<profile name="search profile">
<rule name="search rule">
<rulebase>ids:rb</rulebase>
<system>ssa001</system>
<search name="search name">
<sdf_search>name-search</sdf_search>
</search>
</rule>
</profile>
</server>
The example defines one profile but multiple profiles can be defined. Each may contain one or more rules. In this case,
there is just one rule. Each rule must have a corresponding definition that nominates the Rulebase name, System
name and any number of Searches (name-search in this example) that can be used by a client.
NSA-Batch Service
127
WSDL file
A WSDL file is created in the server work directory for each system defined in the xsserv.xml file when the server
starts or is refreshed.
The WSDL can also be accessed through the server at:
http://<xshost>:<xsport>/?<system>sync.wsdl
For example, the sample system would be found at:
http://localhost:1670/?ssa001sync.wsdl
Configuring
The configuration process consists of creating a simple text file named either xrserv.ini or xrserv.xml. The file
extensions represent the two different formats that the configuration file may take.
The file must be located in either $SSAINI, $HOME or $SSABIN. These 3 directories are searched in that order. If the
configuration file is not found, then the Real Time Web Service will not be available.
The contents of the configuration file determine which IDTs will be synchronized by the Service.
Note: The configuration file is read at server initialization time, so changes to the configuration become effective only
after the server has been restarted.
The xrserv.ini form has the same format as the htserv.ini file used by the HTTP Search Server. Refer to the HTTP
Search Client section of the OPERATIONS Guide for instructions on how to use this format.
Since this is a Web Service, the XML format is recommended.
Configuration Settings
The following settings may be specified in the xrserv.xml file.
128
mode
Global, mandatory parameter. Possible values are generic or custom. generic indicates that all synchronized
IDTs in the specified rulebase should be made available to Real Time clients. The custom indicates that only the
specified IDTs should be made available to Real Time clients.
txn_thread_num
Global, optional parameter. Specifies the number of threads which should be devoted to processing IDT
updates.
pid_thread_num
Global, optional parameter. Specifies the number of threads which should be devoted to processing PersistentID updates.
work_queue_size
Global, optional parameter. Specifies the size of the IDT/IDX transaction reader input queue. The default size is
5000.
txn_commit_rate
Global, optional parameter. An appropriate commit rate needs to be selected by tuning. In general, a high commit
rate will provide better transaction throughput. However, too high a rate may cause the database to run out of
rollback space in a multi-user update environment, and updated records wont be visible to searches for long
periods. The default value is 1.
extra_audit_info
Optional parameter. Controls the amount of audit information returned. May be specified at the global level or at
the rule-level. If specified at the rule level, then its setting applies only to the IDT to which that rule applies.
Refer to the DESIGN GUIDE for more information regarding Auditing.
rulebase
Mandatory. Specifies the rulebase to be used for Real Time operations. Must be specified at the global level for
generic mode or at the rule level for custom mode.
system
This is a rule-level, mandatory parameter. Specifies the MDM-RE system containing the IDT to be
processed.
idt
This is a rule-level, mandatory parameter. Specifies the name of the IDT to be processed. This IDT must be
present in the specified MDM-RE system.
local_flul_cache
This is a Forced link and unlink rule parameter and is optional. By default, the local_flul_cache value is set to
true and the Real-Time Synchronization server uses the local Forced Link/Unlink cache. If it needs to use the
common Forced Link/Unlink cache in search server then the local_flul_cache flag should be set to false.
notification
This is a rule-level, optional parameter. The default value is FALSE. If set to TRUE, then the Notification
Service will be informed each time an IDT update occurs. In turn, any users who have subscribed to the
Notification Service to receive update messages relating to the idt concerned will be notified of the update.
del_not_found_warn_only
Changes the behaviour to return only a warning when the IDT record can not be found for a delete transaction.
129
Generic Mode
The simplest possible file contains the following lines:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/xrserv">
<mode>generic</mode>
<rulebase>ids:rb</rulebase>
</server>
Sample xrserv.xml with worker threads configuration:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns="http://www.identitysystems.com/xmlschema/iss-version-8/xrserv">
<mode>generic</mode>
<txn_thread\_num>nn</txn_thread_num>
<pid_thread_num>nn</pid_t hread_num>
<rulebase>ids:rb</rulebase>
</server>
Note: By default the number of worker threads (nn) is set to the number of CPUs available on the machine. You may
override this value by setting <txn_thread_num>and <pid_thread_num>.
Sample xrserv.xml with extra audit information:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns= "http://www.identitysystems.com/xmlschema/iss-version-8/xrserv">
<mode>generic</mode>
<txn_thread_num>nn</txn_thread_num>
<pid_thread_num>nn</pid_thread_num>
<extra_audit_info>True</extra_audit_info>
<rulebase>ids:rb</rulebase>
</server>
Note: By default the extra audit information is turned off. Refer to the DESIGN GUIDE for details on Auditing.
This simple xrserv.xml can synchronize all system and its IDTs in the Rulebase ids:rb available. Rulebase name
must be specified.
Note: Rulebase names are sent from the client to the server in the clear using the HTTP protocol. To avoid passing
database passwords, it is strongly recommended that xsserv.xml files should specify Dictionary Alias names.
Custom Mode
Custom mode is used to restrict the set of IDTs which may be Synchronized using the Real Time Web Service. A
custom xrserv.xml file could look something like this:
<?xml version="1.0" encoding="UTF-8"?>
<server xmlns= "http://www.identitysystems.com/xmlschema/iss-version-1/xrserv">
<mode>custom</mode>
<txn_thread_num>nn</txn_thread_num>
<pid_thread_num>nn</pid_thread_num>
<profile name="IDT001">
<rule name ="RULEIDT001">
<rulebase>ids:rb</rulebase>
<system>ssa001</system>
<idt>IDT001</idt>
</rule>
</profile>
</server>
This example defines one profile but multiple profiles can be defined. Each may contain one or more rules. In this
case, there is just one rule. Each rule must have a corresponding definition that nominates the Rulebase name,
System name and any number of IDTs (IDT001 in this example) that can be synchronized.
130
131
Sequence Numbers
The Synchronization Server can process updates from many sources at once. To ensure updates to the same IDT
record are performed in the desired order sequence numbers are used. The Synchronization Server conforms to the
same format for sequence numbers as NSA transaction table. That is a 32 byte string. This means that string
comparison are used for ordering purposes. If using numbers they should be right justified, zero filled. We recommend
using a single pool of sequence numbers for every IDT.
RELATED TOPICS:
Batch Utilities on page 177
Prerequisites
The Synchronization Server must be running and the Real-Time Web Service must be configured. See the Enabling
the Real Time Web Service section for further details.
132
WSDL
WSDL files are created by the Synchronization Server in the server work directory for each rule and system defined in
the xrserv.xml file when the server starts or is refreshed. The WSDL can also be accessed through the server at:
http://<xshost>:<xsport>/?<system>.wsdl
where <system> is the last-mentioned system in the xrserv.xml file. For example, the ssa003 sample system will
usually be found at:http://localhost:1670/?testx345.wsdl
The WSDL can also be retrieved from :http://<xshost>:<xsport>/?<rule>.wsdl
sync.Url = xrserv;
("response={0}", response);
("status={0}", status);
("rulebase={0}", message.Rulebase);
("system={0}", message.System);
("IDT={0}", message.IDT);
133
idt003
(pk)
SYNC REPLACE_DUPLICATE_PK
TXN-SOURCE NSA
AcctNo
Name
DOB
Address
C(11),
C(50),
C(8),
C(40)
server up.
134
<wsu:Expires>2011-07-01T07:17:53.938Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
<wsa:To>http://d-xpx86-ross:1670</wsa:To>
<wsa:MessageID>urn:uuid:7E1A0F1206D156B17A1309504573377</wsa:MessageID>
<wsa:Action>http://www.identitysystems.com/xmlschema/iss-version-8/RealTimeSync/Sync/ssa003/
IDT003</wsa:Action>
</soapenv:Header>
<soapenv:Body>
<ns1:IDT003 xmlns:ns1="http://www.identitysystems.com/xmlschema/iss-version-8/RealTimeSync"
IDS_OP="A" IDS_SEQ="<ns1:AcctNo>144</ns1:AcctNo>
<ns1:Address>9 TORRENS STREET</ns1:Address>
<ns1:CL_ID/>
<ns1:DOB>19661017</ns1:DOB>
<ns1:Name>MARSHALL ROBERT</ns1:Name>
</ns1:IDT003>
</soapenv:Body>
</soapenv:Envelope>
135
<ssa:New>false</ssa:New>
<ssa:Automatic>true</ssa:Automatic>
</ssa:ClusterAction>
</ssa:AuditMSG>
</ssa:IDT003_response>
</soap:Body>
</soap:Envelope>
136
Notification Service
The Notification Service is provided by the Synchronization Server. Therefore, The Synchronization Server must be
running. This is achieved by allocating the servers host name (SSA_XSHOST) and port number (SSA_XSPORT) in env
\isss.bat(Windows) or env/isss(UNIX). The default port number of the Synchronization Server is 1671.
Conformance
The Notification Service implements the Oasis Web Services Base Notification 1.3 (WSBaseNotification)
specification.
Notification Service
137
<SubscriptionReference>
<wsa:Address>http://localhost:1671</wsa:Address>
</SubscriptionReference>
<Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">rule</Topic>
<AuditMessage>
<System>sysname</System>
<IDT>IDTFP</IDT>
<Rulebase>ids:rb</Rulebase>
<ClusterAction>
<Type>Delete from Cluster</Type>
<To>
<ID>AA</ID>
<No>653</No>
</To>
<New>false</New>
<Automatic>true</Automatic>
<RecordActions/>
<RecordActions/>
<Modifier/>
<Comment/>
</ClusterAction>
</AuditMessage>
</NotificationMessage>
</wsnt:Notify>
</soap:Body>
</soap:Envelope>
1.
2.
3.
Subscribe
In order to recieve notification messages, a client must first subscribe to the messages that it wishes to recieve. A
subscription message looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuritysecext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd">
<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<wsa:Action>http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/SubscribeRequest</
wsa:Action>
<wsa:MessageID>urn:uuid:a127a7e6-444e-43f2-85c7-79bfd0820098</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</
wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://localhost:1671/</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-9159d636-343a-4951-9bd2-802f7b079a52">
<wsu:Created>2011-06-16T05:23:45Z</wsu:Created>
<wsu:Expires>2011-06-16T05:28:45Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<Subscribe xmlns="http://docs.oasis-open.org/wsn/b-2">
<ConsumerReference>
<Address xmlns="http://www.w3.org/2005/08/addressing">
138
http://localhost:1671/PullPoint/dff98400-1c24-48d9-aab4-a43c84225b1e</Address>
</ConsumerReference>
<Filter>
<TopicExpression
xmlns="" Dialect="http://docs.oasis-open.org/wsn/t-1/
TopicExpression/Simple">rule</TopicExpression>
</Filter>
<InitialTerminationTime xsi:nil="true"/>
</Subscribe>
</soap:Body>
</soap:Envelope>
1.
2.
3.
The TopicExpression limits the subscriber to retrieving messages from a single rule. Only simple topics (http://
docs.oasis-open.org/wsn/t-1/TopicExpression/Simple) are supported. If no TopicExpression is supplied,
then the subscriber will be subscribed to all rules.
4.
The InitialTerminationTime here is set to xsi:nil="true", which means that the subscription does not expire until
the server is shut down or restarted. Alternatively, a date or duration could be supplied. A date must be in the
xsd:dateTime format ([-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm]) while a duration needs to be in the
xsd:duration form.
Notification Service
139
</soap:Body>
</soap:Envelope>
1.
2.
The ReferenceParameters contains a subscription ID. This is used by the Unsubscribe request.
3.
The InitialTerminationTime here is set to xsi:nil="true", which means that the subscription does not expire until
the server is shut down or restarted. Alternatively, a date or duration could be supplied.
GetCurrentMessage
The latest message for a given topic can be returned with a GetCurrentMessage request:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd">
<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<wsa:Action>http://docs.oasis-open.org/wsn/bw-2/NotificationProducer/
GetCurrentMessageRequest</wsa:Action>
<wsa:MessageID>urn:uuid:88afbfb3-0d0f-4038-9702-ddbf5663afb1</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</
wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://localhost:1671/</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-e35188af-0877-4cf4-b977-d0439d6bee32">
<wsu:Created>2011-06-17T03:24:07Z</wsu:Created>
<wsu:Expires>2011-06-17T03:29:07Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<GetCurrentMessage xmlns="http://docs.oasis-open.org/wsn/b-2">
<Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">rule</
Topic>
</GetCurrentMessage>
</soap:Body>
</soap:Envelope>
A TopicExpression must be suppled with this request Only simple topics (http://docs.oasisopen.org/wsn/t-1/
140
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-d79f3cf7-ffb7-4529-911c-4c93157adc5d">
<wsu:Created>2011-06-17T03:24:07Z</wsu:Created>
<wsu:Expires>2011-06-17T03:29:07Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<wsnt:GetCurrentMessageResponse>
<NotificationMessage>
<Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">rule</Topic>
<AuditMessage>
<System>sysname</System>
<IDT>IDTFP</IDT>
<Rulebase>ids:rb</Rulebase>
<ClusterAction>
<Type>Delete from Cluster</Type>
<To>
<ID>AA</ID>
<No>653</No>
</To>
<New>false</New>
<Automatic>true</Automatic>
<RecordActions/>
<RecordActions/>
<Modifier/>
<Comment/>
</ClusterAction>
</AuditMessage>
</NotificationMessage>
</wsnt:GetCurrentMessageResponse>
</soap:Body>
</soap:Envelope>
Renew
The subscriptions termination time can be changed with a Renew request:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401wss-wssecurity-utility-1.0.xsd">
<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<wsa:Action>http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/RenewRequest</
wsa:Action>
<wsa:MessageID>urn:uuid:e9d04d81-de0b-4a79-9173-4dfaefa50cf4</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</
wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://localhost:1671/</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-14399d03-58d1-4769-8f63-1f04d8f78431">
<wsu:Created>2011-06-17T05:33:54Z</wsu:Created>
<wsu:Expires>2011-06-17T05:38:54Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<Renew xmlns="http://docs.oasis-open.org/wsn/b-2">
<TerminationTime xsi:nil="true"/>
<ssa:SubscriptionID xmlns:ssa="http://www.identitysystems.com/xmlschema/2011/notify">
30e1752c-7bf5-4441-b8e9-67ba5f59c1b3</ssa:SubscriptionID>
</Renew>
Notification Service
141
</soap:Body>
</soap:Envelope>
1.
2.
Unsubscribe
A subscription can be terminated at any time with an Unsubscribe request:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-utility-1.0.xsd">
<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<wsa:Action>http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/UnsubscribeRequest</
wsa:Action>
<wsa:MessageID>urn:uuid:2bb7d56d-85cd-410d-9ba2-2f9d604294fd</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</
wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://localhost:1671/</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-5030ba37-e056-464d-bad4-56f25b83da6c">
<wsu:Created>2011-06-17T03:24:07Z</wsu:Created>
<wsu:Expires>2011-06-17T03:29:07Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<Unsubscribe xmlns="http://docs.oasis-open.org/wsn/b-2">
<ssa:SubscriptionID xmlns:ssa="http://www.identitysystems.com/xmlschema/
2011/notify">
e3ccfab3-47f7-42cc-b595-e247df33f7d9</ssa:SubscriptionID>
</Unsubscribe>
</soap:Body>
</soap:Envelope>
This requires the subscription ID from the subscription response.
PauseSubscription
A subscription can be paused at any time with an pauseSubscription request. No notification messages will be sent
until a ResumeSubscription request is recieved.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wsswssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd">
<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<wsa:Action>http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/
PauseSubscriptionRequest</wsa:Action>
<wsa:MessageID>urn:uuid:3ea43a8a-a505-4c1d-8c7f-a307117f0539</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</
wsa:Address>
</wsa:ReplyTo>
142
<wsa:To>http://localhost:1671/</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-77b937e0-6699-498f-9665-adad34fb1214">
<wsu:Created>2011-06-17T03:24:06Z</wsu:Created>
<wsu:Expires>2011-06-17T03:29:06Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<PauseSubscription xmlns="http://docs.oasis-open.org/wsn/b-2">
<ssa:SubscriptionID xmlns:ssa="http://www.identitysystems.com/xmlschema/2011/
notify">
e3ccfab3-47f7-42cc-b595-e247df33f7d9</ssa:SubscriptionID>
</PauseSubscription>
</soap:Body>
</soap:Envelope>
This requires the subscription ID from the subscription response.
ResumeSubscription
The ResumeSubscription request tells the Notification service to resume sending notify messages to a paused
subscription.
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecuritysecext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurityutility-1.0.xsd">
<env:Header xmlns:env="http://www.w3.org/2003/05/soap-envelope">
<wsa:Action>http://docs.oasis-open.org/wsn/bw-2/SubscriptionManager/
ResumeSubscriptionRequest</wsa:Action>
<wsa:MessageID>urn:uuid:73b2727c-ce1b-4704-a62e-cf9e0a69b10c</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</
wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://localhost:1671/</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-7eb82fd9-e5a4-43a3-83a5-5ed9a3284e3d">
<wsu:Created>2011-06-17T03:24:06Z</wsu:Created>
<wsu:Expires>2011-06-17T03:29:06Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</env:Header>
<soap:Body>
<ResumeSubscription xmlns="http://docs.oasis-open.org/wsn/b-2">
<ssa:SubscriptionID xmlns:ssa="http://www.identitysystems.com/xmlschema/
2011/notify">
e3ccfab3-47f7-42cc-b595-e247df33f7d9</ssa:SubscriptionID>
</ResumeSubscription>
</soap:Body>
</soap:Envelope>
This requires the subscription ID from the subscription response.
UDDI
MDM-RE web services can be registered with UDDI.
UDDI
143
144
business
The UDDI Business Name. The name of the party publishing the service.
inquire
The UDDI inquiry URL, which is probably something like:http://uddi/uddipublic/inquire.asmx
publish
The UDDI publisher URL, which is probably something like: http://uddi/uddipublic/publish.asmx
user
The UDDI user, which must be in the UDDI publishers group. This item is encrypted.
password
The UDDI users password and this item is encrypted.
The access point, which is the URL of the web service server
2.
3.
4.
UDDI
145
CHAPTER 10
ASM Workbench
This chapter includes the following topics:
Introduction, 146
Launching the ASM Workbench, 146
ASM Workbench Input Options, 147
ASM Workbench and Batch Test utility, 159
Introduction
The ASM Developers Workbench is a Java GUI tool that helps a programmer prototype Address Standardization API
calls. The ASM Workbench is used to parse addresses into their individual component fields and to validate them
against postal reference databases. The ASM Workbench is used for:
Parsing Unfielded Address Format
Validating Fielded and Unfielded Address Format
In order to use the ASM Developers Workbench, MDM Registry Edition (MDM-RE) core modules should have been
installed, either locally, or on another computer/server.
146
where
-hHostName:PortNumber
Search Server Host name and Port Number.
1File1
Specifies the file where log message are redirected.
2File2
Specifies the file where error message are redirected.
-b
Use ASM with AddressDoctor v5.
-cCharacterSet
The Character set to use. The default is WIN1250.
-dDefaultCountry
The Country to use when parsing can not determine a country from the address.
-mValidationMode
The Mode to use for validation purposes valid values are Suggest, Correct, Complete and Certify. The default value is
Suggest.
For example:
%SSABIN%\asmcli -h%SSA_SEHOST% -1asmcli.log -2asmcli.err
or
%SSABIN%\asmcli -h%SSA_SEHOST% -1asmcli.log -2as0mcli.err -d""
147
Character Set
This is used to define the character set of the input data. The parsed / validated address fields will be returned to the
caller using this character set as well.
Partial Preload
Partial preloading will load the data and indexing structures into memory. The reference data itself will remain on
the hard drive. Partial is an alternative when not enough memory is available to fully load the desired
databases.
Full Preload
Full preloading will move the entire reference database into memory. This may need a significant amount of
memory for countries with large databases such as USA or, but it will increase the processing speed
significantly.
Note: Before preload of country verify selected country name contains corresponding database (.MD) file located
in appropriate postal reference database directory %SSATOP%/ssaas/ad/ad/db for ASM using AddressDoctor v4
and %SSATOP%/ssaas/ad5/ad/db for ASM using AddressDoctor v5.
148
Options
Batch Mode
Batch Mode is mainly used for importing input file containing unfielded input data and correcting the input
address.
Interactive Mode
Interactive Mode is user driven, user has to use either unfielded (10 line input) or fielded inputs (individual
components address input).
Attributes
149
Preferred Language
This option is used to represent address into appropriate language type.
Option Value
Meaning
POSTAL_ADMIN
Set preferred language to that which is preferred by the postal service. This is the
default.
LATIN_SCRIPT
ENGLISH
Validation Mode
Some optional aspects of Address Standardization behavior may be set by selecting the Validation Mode combo
box.
Option Value
Meaning
Correct
Correct the input address. Do not generate suggestions. Generally used in batch mode.
Suggest
Generate suggestions (the default). Generally used by online applications where the operator
can choose between a list of possibilities.
Complete
Use an incomplete address (fragment) to quickly generate suggestions. Used for online "fast
completion" style of applications.
Certify
Use CASS certified validation rules defined by the USPS. Certify mode is only available for US
addresses and requires additional database files to be installed in the DB directory.
Archive Check
Archive Check option will include vanity names and outdated names (especially for localities) in the processing.
Skipping this option will improve the speed very slightly, but may not correct addresses containing vanity names
or outdate locality names. Two countries where you should definitely use this option are Germany and the US.
The address shown in the suggested address label display is formatted according to the address formatting rules in
the country
150
are viewed in the List box in Output Results Frame. When the users has chosen the UnFielded and validate option,
then Output frame list out the suggestion for the input address, once the user clicks on each suggestion the output
address data from the List is mapped to corresponding fields in Fielded address display panel.
Where version represents the Validation Database version and the status represent the Validation Status as mention
in the following table for ASM using AddressDoctor v4:
Status Code
Meaning
Address is correct
Insufficient information
10
No suggestions
151
Status Code
Meaning
11
Suggestions incomplete
12
Suggestions
Refer below table for validation status for ASM using AddressDoctor v5:
152
Status Code
Meaning
Verified - Input data correct - all elements were checked and input matched perfectly
Verified - Input data correct on input but some or all elements were standardised or input contains outdated
names or exonyms
Verified - Input data correct but some elements could not be verified because of incomplete reference
data
Verified - Input data correct but the user standardisation has deteriorated deliverability
Corrected - but delivery status unclear because user standardisation was wrong
Data could not be corrected completely, but is very likely to be deliverable - single match
Data could not be corrected completely, but is very likely to be deliverable - multiple matches
10
Data could not be corrected, but there is a slim chance that the address is deliverable
11
12
13
FastCompletion Status - Suggested address is complete but combined with elements from the input
14
15
16
17
18
19
20
Status Code
Meaning
21
22
23
24
25
26
27
Parsed perfectly
28
29
30
31
32
Validation Error: No validation performed because required reference database is not available
33
34
Validation Error: No validation performed because reference database is corrupt or in wrong format
35
Validation Error: No validation performed because reference database is too old - you need to contact
AddressDoctor to obtain updated reference data
153
154
Match Status
All results share a Match Status that describes how the address elements matched to the postal reference data.
Refer below table for match status for ASM using AddressDoctor v4:
Match Status
Meaning
Empty
Not found
Refer below table for match status for ASM using AddressDoctor v5:
val_status
Meaning
Empty
Not found
Result Status
The Result Status indicates for each address component if and how it has been modified during the address
validation process. Refer below table for result status for ASM using AddressDoctor v4:
Result Status
Meaning
Empty
Not checked
155
Result Status
Meaning
Refer below table for result status for ASM using AddressDoctor v5:
val_mo
ds
Meaning
Empty
12
13
14
15
156
157
158
159
Note: The -h option must be specified either in the input file or on the command line. The command line overwrites any
value specified in the input file.
160
CHAPTER 11
Overview
Cluster Merge Rules are those rules which take a cluster as input and produce a record which is a condensed or single
view of that cluster. These rules are defined as part of a system. This section contains some examples of these rules.
All the rule types can be use in combination and are order dependant.
The Rules are processed in the order listed, removing candidates at each step unless all candidates are removed.
Processing stops when a unique record is found, or if the end of the rules is reached. If the end of the rules is reached,
and no unique record is found, the first of the remaining candidate records is selected and the result is flagged as
ambiguous.
It is also possible for the rules to fail to find a result for one or more columns. This occurs if no rule matches any
candidate. One such rule where this can occur is the other column equals rule. When no candidates matches the value
stored in this rule it will fail to generate a result and the result will be flagged as such.
Example SDF
This section provides an example of the SDF file.
Section: System
*
system-definition
*=================
NAME= testx311
ID= v1
DEFAULT-PATH= "+"
*
idx-definition
*==================
NAME= idx001
ID= v1
IDT-NAME= idt001
KEY-LOGIC= SSA, System(default), Population(test),
161
162
#SCHEMA#.TESTX001.ID (PK1) Id
sync #SSA_SYNC_LEVEL#
;
Section: Files
Section: Views
*
Master Rules
This section provides information on the options in the Master Rules.
u
modal exact
Selects the records with the greatest number of columns that contain the modal (most common) value. The modal
value is determined by a strict comparison.
sdf snippet
merge-definition
*===============
NAME= person-merge-modal
MASTER-SELECTION= modal-exact
*
merge-master-definition
*======================
NAME= modal-exact
TYPE= modal-exact
*
Input
Result
most filled
u
modal exact
Selects the records with the greatest number of columns filled.
sdf snippet
merge-definition
*===============
NAME= person-merge-most-filled
MASTER-SELECTION= most-filled
*
merge-master-definition
*======================
NAME= most-filled
Master Rules
163
TYPE= most-filled
*
Input
Result
most data
u
most data
Selects the records with the most data (longest sum of string lengths). Column with a NULL value will not add to
the total length
sdf snippet
merge-definition
*===============
NAME= person-merge-most-data
MASTER-SELECTION= most-data
*
merge-master-definition
*======================
NAME= most-data
TYPE= most-data
*
Input
Name
John
John
John
Result
Addr updated
Smith 12 Main Street 14072008
Smith 12 Maine Street 13072008
Smythe 12 Maine Street
column max
u
column max
Selects the records with the greatest value in a particular column. The COLUMN field must be provided.
sdf snippet
merge-definition
*===============
NAME= person-merge-newest
MASTER-SELECTION= newest
*
merge-master-definition
*======================
NAME= newest
TYPE= column-max
COLUMN= updated
*
merge-column-definition
*======================
NAME= updated
164
FORMAT= "DMY"
*
Input
Result
column min
u
column min
Selects the records with the lowest value in a particular column. The COLUMN field must be provided.
sdf snippet
merge-definition
*===============
NAME= person-merge-oldest
MASTER-SELECTION= oldest
*
merge-master-definition
*======================
NAME= oldest
TYPE= column-min
COLUMN= updated
*
merge-column-definition
*======================
NAME= updated
FORMAT= "DMY"
*
Input
Result
column equals
u
column equals
Selects the records where a particular column equals a given value. The COLUMN and VALUE fields must be
provided.
sdf snippet
merge-definition
*===============
NAME= person-merge-verified
MASTER-SELECTION= column-verified-equals
*
merge-master-definition
*======================
NAME= column-verified-equals
Master Rules
165
TYPE= column-equals
COLUMN= verified
VALUE= Y
*
Input
name
John
John
John
Result
street
verified
Smith 12 Main St
N
Smith 12 Maine Street
N
Smyth 12 Maine Street
Y
updated
14072009
13072009
13082009
Column Rules
This section provides information on the options of Column Rules.
from master
Selects the value from the master record.
modal exact
Selects the records that contain the modal (most common) value. The modal value is determined by a strict
comparison.
sdf snippet
merge-definition
*===============
NAME=
MASTER-SELECTION=
COLUMN-SELECTION=
*
merge-master-definition
*======================
NAME= modal-exact
TYPE= modal-exact
*
merge-column-definition
*===============
NAME= Name
IDTCOLUMN= Name
RULE-SELECTION= from-master
*
merge-column-definition
*===============
NAME= Addr
IDTCOLUMN= Addr
RULE-SELECTION= from-master
*
merge-column-definition
*===============
NAME= Updated
IDTCOLUMN= Updated
RULE-SELECTION= from-master
*
merge-column-rule-definition
*===========================
NAME= from-master
TYPE= from-master
166
person-merge-modal
modal-exact
Name, Addr, Updated
Input
Name Addr updated
John Smith 12 Maine Street 14072008
John Smith 12 Main Street 13072008
Jon Smith 12 Main Street 23082008
Result
John Smith 12 Main Street 13072008
most-data
u
most-data
Selects the records with the most data (longest sum of string lengths).
sdf snippet
merge-definition
*===============
NAME=
MASTER-SELECTION=
modal-exact
COLUMN-SELECTION=
name-most-data
*
merge-column-definition
*===============
NAME= name-most-data
IDTCOLUMN= name
RULE-SELECTION= most-data
*
merge-column-rule-definition
*===========================
NAME= most-data
TYPE= most-data
*
Input
name
John Smith
John J Smith
John Smyth
person-merge
Result
John J Smith
min
u
min
Selects the records with the lowest value in the current column.
sdf snippet
merge-definition
*===============
NAME= person-merge-min-salary
MASTER-SELECTION= modal-exact
COLUMN-SELECTION= salary-min
*
merge-column-definition
*===============
NAME= salary-min
Column Rules
167
IDTCOLUMN= salary
RULE-SELECTION= min
*
merge-column-rule-definition
*===========================
NAME= min
TYPE= min
*
Input
salary
0100000
0065000
0080000
0066000
Result
0065000
max
u
max
Selects the records with the highest value in the current column.
sdf snippet
merge-definition
*===============
NAME= person-merge-max-date
MASTER-SELECTION= modal-exact
COLUMN-SELECTION= date-max
*
merge-column-definition
*===============
NAME= date-max
IDTCOLUMN= date
FORMAT= "MDY"
RULE-SELECTION= max
*
merge-column-rule-definition
*===========================
NAME= max
TYPE= max
*
Input
date
01302004
01322005
04301999
01012005
07221997
Result
01322005
sum
u
sum
Selects a generated record with the sum of all values in the current column.
168
sdf snippet
merge-definition
*===============
NAME= person-merge
MASTER-SELECTION= modal-exact
COLUMN-SELECTION= salary-sum
*
merge-column-definition
*===============
NAME= salary-sum
IDTCOLUMN= salary
RULE-SELECTION= sum
*
merge-column-rule-definition
*===========================
NAME= sum
TYPE= sum
*
Input
salary
0100000
0065000
0080150
0066999
Result
0312149
mean
u
mean
Selects a generated record with the average of all values in the current column.
sdf snippet
merge-definition
*===============
NAME=
MASTER-SELECTION=
modal-exact
COLUMN-SELECTION=
salary-sum
*
merge-column-definition
*===============
NAME= salary-sum
IDTCOLUMN= salary
RULE-SELECTION= sum
*
merge-column-rule-definition
*===========================
NAME= sum
TYPE= sum
**
Input
salary
0100000
0064000
0080000
0072400
person-merge
Result
0079100
Column Rules
169
sdf snippet
merge-definition
*===============
NAME= person-merge
MASTER-SELECTION= modal-exact
COLUMN-SELECTION= salary-where-verified
*
merge-column-definition
*===============
NAME= salary-where-verified
IDTCOLUMN= salary
RULE-SELECTION= verified
*
merge-column-rule-definition
*===========================
NAME= verified
TYPE= other-column-equals
TARGET-COLUMN= verified
VALUE= Y
*
Input
salary verified
0100000 N
0064000 Y
0080000 N
0072400 N
Result
0064000 N
Note: verified became N in the result because of the master modal-exact rule.
sdf snippet
merge-definition
*===============
NAME= person-merge
MASTER-SELECTION= modal-exact
COLUMN-SELECTION= salary-where-oldest
*
merge-column-definition
*===============
NAME= salary-where-oldest
IDTCOLUMN= salary
RULE-SELECTION= oldest
*
merge-column-rule-definition
*===========================
NAME= oldest
170
TYPE= other-column-min
TARGET-COLUMN= updated
FORMAT= "MDY"
*
Input
salary
0096500
0098100
0080000
0072400
Result
updated
02142001
05162009
01132002
03272001
0096500 02142001
Note: verified became N in the result because of the master modal-exact rule.
sdf snippet
merge-definition
*===============
NAME= person-merge
MASTER-SELECTION= modal-exact
COLUMN-SELECTION= name-where-newest
*
merge-column-definition
*===============
NAME= name-where-newest
IDTCOLUMN= name
RULE-SELECTION= newest
*
merge-column-rule-definition
*===========================
NAME= newest
TYPE= other-column-max
TARGET-COLUMN= updated
FORMAT= "DMY"
*
Input
salary
John Smyth
John Smith
J Smith
John Smith
Result
updated
14122009
16112003
15012001
20112009
Note: verified became N in the result because of the master modal-exact rule.
Column Rules
171
CHAPTER 12
Overview
The forced link and unlink feature helps users to identify a set of records as being the same or different entity. Link
rules allow users to identify a set of records as the same entity. Unlink rules allow users to identify a set of records as
separate entities.
The link and unlink rules can be supplied during the design of an MDM-RE system. The application of these rules are
controlled by the Persistent-ID options. For more details, see the PERSISTENT-ID-OPTIONS section under the Multisearch definition in the MDM-RE Design guide.
172
1.
Rule Type
2.
Subject Record PK
3.
Relationship
4.
Related Record PK
Definition
Rule Type
Use this field to specify the type of the rule. A value of "A" represents that the rule
needs to be added to the system and "D" represents that a rule needs to be removed
from the system.
Subject Record PK
Use this field to specify the PK of the subject record. The subject record is the record
to which something should be linked or unlinked.
Relationship
Use this field to specify the relationship between the subject record and related
record. A value of "L" represents a Link rule between the subject record and the
related record and a value of "U" represents an Unlink rule between the subject
record and the related record.
Related Record PK
Use this field to specify the PK of the record that is either linked or unlinked to the
subject record.
Example
For adding a link rule
"A","000000005","L","000000006"
For deleting a link rule
"R","000000005","L","000000006"
For adding an unlink rule
"A","000000005","U","000000001"
For deleting an unlink rule
"R","000000005","U","000000001"
Multiple PK record
When using multiple PKs, the Subject and Related PK fields must be in the same order as defined in the USTDefinition section of the SDF file.
For example
For adding a link rule
"A","PK1",PK2,"L","PK1",PK2
For deleting a link rule
"D","PK1",PK2,"L","PK1",PK2
For adding an unlink rule
"A","PK1",PK2,"U","PK1",PK2
For deleting an unlink rule
"D","PK1",PK2,"U","PK1",PK2
Note: Link and unlink rules for non-existing records will be ignored. A report is generated showing the ignored link and
unlink rules.
173
You will need to specify the name of the IDT or PID to which the rules should be associated.
Console Client
User can load the link and unlink rules using the console client. For loading link and unlink rules, perform the following
steps:
1.
From the MDM-RE console client, go to the Tools menu. The Load Link/Unlink Rules option appears in the left
panel.
2.
Select the Load Link/Unlink Rules option. A dialog as shown below appears:
3.
Enter the inputs for the fields. The field description is as provided below:
Field
Description
IDT
Persistent-ID
Supplied Link and Unlink rules will be associated with the selected Persistent-ID.
Delimiter
Rules File
File containing the link and unlink rules as per the input format.
174
For more information about user-defined jobs, see the User-Job-Definition and User-Step-Definition sections in the
MDM-RE Design Guide. For more information about the idsbatch utility, see the Batch Utilities /idsbatch section in
this guide.
1.
2.
user-job-load-MR
user-job-load-MR
0
"Load Link/Unlink Rules"
"Load Link/Unlink Rules"
(IDT,IDT387),
(Persistent-ID,search-name-multi),
(Delimiter,44),
("Rules File","+/data/testx387.txt")
Create idsbatch instructions file to run the user defined job as follows:
# Load Link/Unlink rules
# ---------------------action=job-run
job-name=user-job-load-MR
system-name=testx387
rulebase-name=#SSA_RBNAME#
work-directory=#SSAWORKDIR#
3.
Command
For Windows:
For UNIX:
Using API
User can provide the Link and Unlink rules through APIs. For more information on these APIs, see the MDM-RE
Developer's Guide.
Cluster Adjustments
Cluster adjustments refer to the changes done by the user to a cluster after it is initially formed by MDM-RE clustering
engine. Cluster adjustments can be done using MDM-RE IDD client.
Record Link and Unlink will be preserved in the form of link and unlink rules respectively.
Cluster Adjustments
175
CHAPTER 13
It is good practice to have a standard test or set of tests to verify the restore. Also, see the Backup and Restore section
of the DESIGN GUIDE for more details.
176
CHAPTER 14
Batch Utilities
Most MDM-RE processes launched by the Console can be run in batch. This section describes those utilities and their
parameters.
Function
Utility Name
Create Rulebase
idsinit, idsbatch
Create Database
dbinit, idsbatch
Create System
idsbatch
Delete System
idsbatch
ssachdb
Version Signatures
version
idsbatch
List/Remove locks
lockmgr
Table Loader
idsbatch
Most functions can be performed in batch by defining a Console Job which performs the desired function and then
running the job in batch mode using the idsbatch utility, described below.
177
Common parameters:
The utilities documented in this section have some common parameters that are explained in this section and are
omitted from the following utility descriptions:
-pSystem
The System Name.
-rRbName
Rulebase name.
-hRbHost
Rulebase Server connection details. Format is hostname:port
-dDbName
Database name.
-vVerbosity
Verbosity of job where p=progress, s=statistics, u=usage, i=info
-1UtilityLog
Utility Log file name
-2UtilityErr
Utility Error file name
--1ServerLog
Server Log file name
--2ServerErr
Server Error file name
ssachdb
This utility is used to change the source or target database connection string, stored in the Rulebase, for a given
system. The utility may also be used to change the schema name associated with the source database (defined in the
User Source Tables section).
This is useful when the DBMS password has been changed, or when the entire Rulebase has been copied and moved
to another database (example, Test to QA). The syntax is:
%SSABIN%\ssachdb -oOldName -nNewName [-z] | -xOldSchema -yNewSchema CommonParms
where
-oOldName
The old Database connection string
-nNewName
The new Database connection string
-z
Update IDS_2PC table (see Synchronizer Considerations below).
-xOldSchema
The old source database schema
-yNewSchema
The new source database schema
178
For example, the following three calls change the name of the source connection string, source schema from TEST to
QA, and target database connection string respectively.
ssachdb -oodb:99:ssa/ssa@srcdb -nodb:99:ssa/ssa@newsrcdb ...
ssachdb -xTEST -yQA ...
ssachdb -oodb:1:ssa/ssa@tgtdb -nodb:1:ssa/ssa@newtgtdb ...
The utility updates the Rulebase by performing a simple text replacement of the old string with the new one. If it is
necessary to change the source and target connection strings independently, it is necessary to use different names
for them in the original system. For example, using a database number of 99 for the source database distinguishes it
from the target database, which by default uses a database number of 1, even if they share the same connection
parameters (uid/pwd@svc).
Synchronization Considerations
In general, synchronization of a cloned target database is not possible without reloading the IDT/IDXs. There are
many problems including:
Triggers on the source database will continue creating transactions for a specific database number (example,
IDS_01). If the new target databases connection string specifies a different database number, it will be unable to
see those transactions.
There are now multiple consumers of trigger transactions (databases A and A), but only one transaction will be
created, which is insufficient to synchronize both databases. In other words, the cloned system does not have any
triggers defined for it, and must not process the transactions created for the original system.
The IDS_2PC table contains the name (connection string) of the original target database. This may be changed to
the new target database by using the -z switch in combination with the -o and -n switches. That is, ssachdb will
connect to the database specified with-n and update the IDS_2PC table, replacing the OldName with the NewName.
dbinit
This utility initializes a database ready for use by MDM-RE.
%SSABIN%\dbinit [-pSystem] [-rRbName] [-hRbHost] -dDbName [-vpsu] [-f] [-gn]
where
-f
Deletes the database initialization flag but does not delete the database contents (IDTs, IDXs, etc).
-gn
n is the database granularity. This must be a power of two, and may be expressed in k or m (example, -g32k)
All parameters are optional, except for the database name, but if a system is supplied, a Rulebase must also be
supplied, and vice versa.
idsinit
This utility initializes a Rulebase.
%SSABIN%\idsinit -rRbName -hRbHost [-vpsu] [-f]
where
-f
Deletes the Rulebase.
lockmgr
This utility either
deletes a group of locks with a common unique identifier (uq), or
lists all the application locks for a system (in ascending uq order), or
179
version
This script is used to display the version signatures from the programs and objects in MDM-RE.
%SSABIN%\version [product-id]
where
product-id is the name of the sub-system to display. Valid values include all, ce, db, dl, lm, io, ut and cs.
idsbatch
This program reads and executes actions defined in a text file. Most commonly performed Console Client functions
are available by running user defined jobs. See the User-Job-Definition section in the DESIGN GUIDE .
%SSABIN%\idsbatch -h<CShost> -i<commandFile> -1<logFile> [-2<errorFile>] [-3<dbgFile>]
where:
-h<CShost>
Required. Console Server host:port address.
-i<commandFile>
Required. The name of the file that contains the list of actions to be performed.
-1<logFile>
Required. The name of the output (log) file.
-2<errorFile>
Optional. The name of the error output file. This file will contain error messages if one or more steps fail.
-3<dbgFile>
Optional. The name of the debug output file. This file may contain error messages and additional information about any failures
when the value of environment variable SSAOPTS contains +L.
180
At the beginning of the input file, a mandatory parameter work-directory= should be initialized with the full path of the
desired MDM-RE Server working directory. For example:
work-directory=c:\InformaticaIR\work
or assuming that the MDM-RE Server has the SSAWORKDIR environment variable set (as it should):workdirectory=#SSAWORKDIR#
The MDM-RE Server working directory can be overridden for each individual action by giving the work-directory=
parameter after the action= statement.
The following actions and parameters are supported.
Rulebase creation
action=rulebase-create
rulebase-name= <dbtype>:<number>:<user>/<password>@<service>
For example:
action=rulebase-create
rulebase-name="odb:0:myuid/mypassw@oraserve"
or using dictionary alias
action=rulebase-create
rulebase-name=ids:rulebase
Rulebase deletion
action=rulebase-delete
rulebase-name= <dbtype>:<number>:<user>/<password>@<service>
For example:
action=rulebase-delete
rulebase-name="odb:0:myuid/mypassw@oraserve"
Database creation
action=database-create
database-name=<dbtype>:<number>:<user>/<password>@<service>
For example:
action=database-create
database-name="odb:1:myuid/mypassw@oraserve"
or using dictionary alias
action=database-create
database-name=ids:database
System creation
action=system-create
system-name=<name of the system to be created>
sdf-name= <name of the system definition file which describes the new system>
rulebase-name=<dbtype>:<number>:<user>/<password>@<service>
database-name=<dbtype>:<number>:<user>/<password>@<service>
For example:
action=system-create
system-name=mysystem
sdf-name="#SSAWORKDIR#/mailinglist.sdf"
rulebase-name="odb:0:myuid/mypassw@oraserve"
database-name="odb:1:myuid/mypassw@oraserve"
System deletion
action=system-delete
system-name=<name of the system to be deleted>
rulebase-name=<dbtype>:<number>:<user>/<password>@<service>
181
For example:
action=system-delete
system-name=mysystem
rulebase-name="odb:0:myuid/mypassw@oraserve"
Run User-Defined Job (User Job)
action=job-run
job-name=<name of the pre-defined User Job to be run>
system-name=<name of the system to be deleted>
rulebase-name=<dbtype>:<number>:<user>/<password>@<service>
work-directory=<working directory of the Console Server>
For example:
action=job-run
job-name="run-name-relates"
system-name=mysystem
rulebase-name="odb:0:myuid/mypassw@oraserve"
work-directory=c:\InformaticaIR\work
After the job starts, a detailed message including the run number for each step is written to the output file.
Stop Job
action=job-stop
rulebase-name=<dbtype>:<number>:<user>/<password>@<service>
system-name=<name of the system associated with the job>
run-number=<number of a started job>
For example:
action=job-stop
system-name=mysystem
rulebase-name="odb:0:myuid/mypassw@oraserve"
run-number=1
When stopping a job started using idsbatch, check the output from the preceding job-run action to determine the
value of the run-number parameter.
RELATED TOPICS:
Real Time Failure on System Refresh and Delete on page 132
182
CHAPTER 15
dumpshr
dumpshr is a low-level monitoring utility for Informatica Corporation support staff. It is used to view the call stacks of all
MDM-RE servers and utility programs. It is enabled by setting the environment variable SSAOPTS in the shell used to
launch the servers/utilities.
Since dumpshr uses shared memory to communicate with the servers and utility programs, it must be run on the same
machine as the processes that it is monitoring. On UNIX, make sure that at least 15MB of shared memory can be
allocated (SHMMAX kernel parameter).
Note: Some trace options will degrade performance. Do not enable tracing unless directed to by Informatica
Corporation Technical Support staff.
Enabling Tracing
Installation
To shutdown the MDM-RE Servers, perform the following:
On Win32 platforms, modify <server>/env/envs.bat to
set SSAOPTS=+t
On UNIX platforms:
SSAOPTS=+t ; export SSAOPTS
Restart the MDM-RE Servers and run the dumpshr utility.
Deinstallation
To shutdown the MDM-RE Servers, perform the following:
On Win32 platforms, set SSAOPTS=
On UNIX platforms, unset SSAOPTS
Restart the MDM-RE Servers.
183
SSAOPTS
The following options may be set to enable trace and debugging features:
+t
process/thread/stack tracing. Required for dumpshr operation. Also used to enable server stack trace for crashes found in idsxxsv.dbg. Note that the Crash generated stack traces are only available on Win32.
-t
Completely disables trace processing, including the creation of the shared memory and semaphore. The default behavior is to
create them even when tracing has not been enabled.
+i
Record timestamp for each function entry. Used in conjunction with +t to distinguish between a single long running function call
and a frequently used but short-lived function call.
+L
Logs all error messages to *.dbg files. These files are either in the Server workdir or Server log directory or in /tmp/
ssalog.dbg
+C
log messages using an absolute (wall-clock) time-stamp instead of a process relative time. Format is MDDHHMMSS.
+r
reliably logs all search records to idssrsv.dbg using synchronous I/O (safe but slow). This is useful when trying to identify a
particular search transaction that is causing a server crash.
+T
reliably logs search trace information to idssrsv.dbg using synchronous I/O (safe but slow). This only affects clients that have
enabled LOGTEST. The log is created in addition to the LOGTEST trace file and has the benefit of completeness in the event of a
server crash.
+u
logs process resource usage (threads, sockets, stack space, etc) to *.dbg files. Also logs database resource utilization when users
connect and/or disconnect.
Concatenating switches enables multiple options. For example,
set SSAOPTS=+tLC
Running dumpshr
Non-Interactive Mode
To run dumpshr in non-interactive mode, run
%SSABIN%\dumpshr -p
This will print the MDM-RE function stacks to the console (stdout). It can be redirected to a file using normal shell
commands
%SSABIN%\dumpshr -p >dumpshr.log
Interactive Mode
dumpshr can also be run in interactive mode. This can be used to observe the interaction between server threads and
utility programs. To execute in the interactive mode run command,
%SSABIN%\dumpshr >dumpshr.log
184
This will display a list of MDM-RE processes. For each process, dumpshr displays the process id (pid) and the time it
started (yyyymmddhhmmss). Each thread belonging to that process is summarized with a line displaying as follows:
thread id (the main thread is 256)
stack depth
source module
line number in source module
function entry ("E"), exit ("X"), progress ("P")
function name
Cleaning Up
On the Win32 platform, dumpshr uses Memory Mapped Files as its shared memory mechanism. Memory is allocated
from the Windows swap file and is released when the last program using the memory terminates. As such, there is no
special requirement to clean up.
On UNIX platforms, dumpshr allocates shared memory as an IPC resource. MDM-RE requires the kernel parameter
SHMMAX to be set to at least 15MB.
On UNIX, shared memory is not released when programs using it terminate. This is a nice feature because any
programs that core dump will leave their call stack in the shared memory. At a later stage, dumpshr can be used to
display what the program was doing at the point of failure. However, the disadvantage of this is that when programs
terminate abnormally the memory must be cleaned up manually. Shared memory can be deleted by running, $SSABIN/
dumpshr -d
IPC resources may also be deleted using the UNIX utilities ipcs and ipcrm. MDM-RE creates its shared memory and
semaphore using the key 0x55A00001. Future releases will increment this number when the layout of the shared
memory changes.
185
INDEX
-vVERBOSITY 26
.NET Proxy 132
%SSABIN% 146
A
Actions Set 95
Actions Sets 96
Address Input 147
AddressDoctor 147
Administrator search clients 42
Answer Sets 50
Apache Axis2 102
Application Program Interface 8
Archive Check 147
ASM Batch Test
SSABIN% 159
ASM Workbench 146, 159
B
BACKUP DATABASE 176
batch 177
batch client 88
Batch Mode 147
Batch Search Client 53
Batch Search Clients 40
Batch Searches 88
Business Component 95
Business Service 92
C
CASS Certification 147
CASS Summary 147
checkpoints 57
CJK characters 82
Clear Messages 29
Client INI 42
Client Selection INI file 42
Client Work Directory 28
Clone 38
Clustering Viewer 36
Command File 177
Command line 146
commit rate 79
Compress-Key-Data 59, 79
Configure Mode 12, 15
Connection Aliases 17
Connection server 47
Connection Server 8, 28, 41
Console client 26
Console Client 10, 26, 47
186
Console server 26
Console Server 10, 15, 29, 47
Control Objects 4
Control Record 76
Country Preload Option
Partial Preload
Full Preload 147
Country Specific
AddressDoctor 147
Create Rulebase 177
Custom mode 130
D
database character set 83
Database Level 83
Database Management Systems 1
Database Object Names 1
dbinit 177
DBMS load utility 55
DBMS Load utility 60
DBMS loader 89
DEDUP-PROGRESS 53
define_source 51
Deinstallation 183
Dictionary Alias 44, 46, 130
dumpshr 183
DupFinder 53
DupFinder function 53
DupFinder report 51
E
EAI Siebel Adapter 97
End-of-File marker 85
environment variables 23, 98
error logs 6
F
flat file 76
Flat-File 58, 63, 85
G
Generic Mode 126
Global Jobs 38
Global Logs 7
H
HTTP Search Server 44, 46
HTTP Server 40
I
Identity Indexes 55
ids_conv 89
ids_error_get 6
ids_search_dedupe_start 53
idsbatch 177
idsclie.ini 42
IDT layout 52
IDT Name 132
IDX entry 78
IIR Connection Server 14
Import System 38
Infile 47
INI file 44
Input Locale 82
Input Queue 58
integrity 78
Interactive Mode 147, 183
Interface 1
ISSErrorHandler 93
ISSLaunchBuildLoadFile 98
isss.bat 23
ISSSYNC 96
J
Java Applet 41
Jobs menu 37
K
kernel 183
Key Generation 59
L
Launched Jobs 29
License Server 8
Lite client 42
Lite-Indexes 10
Live Progress 28
load process 92
Load-IDT 38
Loader threads 59
Loader- Definition 85
Loader-Definition 55
loadit 55
lockmgr 7
Log Viewer 38
Logical-File-Definition 47, 98
M
manual restart 17
MDM-RE Utility Service 93
Menu
Database 31
Rulebase 31
Servers 31
System 31
Microsoft SQL Server 83
Mode
Configure 28
Custom 44
Generic 44
Normal 28
MSQ 61
Multi-byte 85
Multi-Search Definition 53
multi-threaded mode 51
N
NLS_CHARACTERSET 83
NLS_LANG 83
No Source Access
NSA Transaction Table 63
Notification Service 128, 137
NSA Transaction Table 8, 76, 99
NSA-Batch Service 8, 126
O
Oasis Web Services 137
Object Manager 91
ODBC interface 1
Online Search Clients 40
Online Searches 88
Optimizers statistics 79
Optional Switches 66
Oracle Client 83
Outfile 47
P
Parsing 147
Pre Delete Event 96
PreDeleteRecord 97
primary keys 74
Profile Attributes 95
R
RB Server 19
RB Server Options 13
Real Time clients 128
Real Time Synchronization 132
Real Time Web Service 69, 128, 130, 132
Regression Test 12
Reject_Duplicate_PK 74
Rejected Time Stamp 132
relate 47
Relate 47
Relate Client 26
Repository Workflow 93
restart 73
Rulebase 29, 38, 177
RuleBase access 8
RuleBase Objects 4
Rulebase server 17
Rulebase Server 8, 12
Index
187
S
Sample Server Start-up 16
Script Coding 23
SDF 98
SDF File 31, 132
Search Client 8, 42
Search Server 6, 47
Search Server Host 146
Search-Definitions 40
Server Shutdown 16
Server-side Search 88
Service Control Manager 23
SHMMAX 183
Shutdown MDM-RE server 176
Siebel Business Component 92
Siebel Connector 8
Siebel CRM 8
Siebel Integration Object 92
Siebel Restrictions 100
SOAP 101
Soap messages
examples 134
SOAP standard 101
Sort utility 58
SQL*Loader 61, 63
SSA Program 26
SSA_DBDICT 1
SSA_HTPORT 44
SSA_SERVER_STATS 18
SSA_XML_SIZE 98
SSA_XSHOST 128
SSAOPTS 183
ssashut 16
ssasrsv 10
SSATEMP 23
SSAWORKDIR 42
Start Script 23
Step Logs 7
Subscribe 137
Switches 13
synchronization 99
Synchronization 177
Synchronization Level 74
Synchronization Server 8, 126, 137
Synchronizer 74
Synchronizer Objects
System Loader 4
Update Synchronizer 4
Synchronizer Utilities 63
System Authentication 1
System Editor 38
188
System Jobs 38
System-Qualifier 4
SystemQualifier 1
Index
U
UDB database 59
UDDI 143
UDDI Configuration file 143
UDDI Environment Variables 143
Unfielded Address 146
Unicode 101
UNICODE 82, 85
Update Synchronizer 7, 60, 63, 66
updmulti 69
updsync 66
User Source Tables 78, 89
UST 81, 92
V
Verbosity 16
W
web services 101
Windows Service 16
Windows Services 23
Workflow 92
Workflows 93
working directory 177
WSDL file 112, 126
WSDL files 132
X
XML Console Server 8
XML Console Service 112
XML file 51
XML Search Service 102
XS Server 91, 99, 100
XSLT clause 51
XSLT stylesheet 51