System Store Connector

You can use the System Store Connector to provide access to the underlying System Store.

The primary use of the System Store Connector is to store Entry objects into the System Store tables. However, you can also use the connector to connect to an external Derby, DB2® 9.7, Oracle, Microsoft SQL*Server or IBM® solidDB® database, not just the database configured as the System Store. Each Entry object is identified by a unique value called the key attribute.

The System Store Connector creates a new table in a specified database if one does not already exist. If you iterate on a non-existing table, the (empty) table is created, and the Iterator returns no values.

The System Store Connector uses the following SQL statements to create a table and set the primary key constraint on the table (Derby syntax):
"CREATE TABLE {0} (ID VARCHAR(VARCHAR_LENGTH) NOT NULL, ENTRY BLOB ); 
ALTER TABLE {0} ADD CONSTRAINT {0}_PRIMARY Primary Key (ID);"
This connector provides pre-set SQL statements for a number of popular databases, but there is also the ability to modify them as you see fit. For other databases, you must enter your own, equivalent SQL statements (multiple ones, if required) by specifying these in the Create Table Statement parameter. The parameter can not be empty; in that case, an exception is thrown.
Note:
  1. The VARCHAR_LENGTH value is picked up from the com.ibm.di.store.varchar.length property set in the Properties Store (TDI-P). The default VARCHAR_LENGTH is set to 512. You can change this value by setting the value of the com.ibm.di.store.varchar.length in the Properties Store.
  2. Another attribute, tdi.pesconnector.return.wrapped.entry, exists for IBM Security Directory Integrator 6.0 compatibility. If you define this property in the IBM Security Directory Integrator global.properties file and set it to true , then IBM Security Directory Integrator reverts back to its earlier behavior where for example, the findEntry() method (used by the system in Iterator, Lookup and Update modes) would return an Entry object of the format: [ENTRY: <Instance of Entry object containing Attributes passed by user>]. In IBM Security Directory Integrator 6.0, in order to obtain the original passed attributes, you would need to write JavaScript code something like this:
    Entry e = (Entry)conn.getAttribute("ENTRY");
    at some appropriate place, after which e contains the Attributes originally passed in when writing to the System Store. You could do this in the Input Attribute Map Hook where you would have to carefully map the Attributes in e to the work entry, or use a Script Component after this Connector to unpack the composite entry attribute in the work entry using the aforementioned JavaScript example (substitute work for conn.)

    In the current version of IBM Security Directory Integrator, by default the entry is unwrapped and therefore all attributes passed by you are now directly available as attributes in the Entry. The above scripting will not be needed any longer (unless you set the tdi.pesconnector.return.wrapped.entry attribute to true.)

  3. The System Store Connector operates in the following modes: AddOnly, Update, Delete, Iterate, Lookup. However, AddOnly, Update and Delete operations are not permitted on the Delta Tables and Property store tables.

The Connector supports both simple and advanced Link Criteria.

This Connector, like the JDBC Connector it is based upon, in principle can handle secure connections using the SSL protocol. However, it may require driver specific configuration steps in order to set up the SSL support. Refer to the manufacturer's driver documentation for details.