Pluggable keys

The following is a description of the changes to how InfoSphere® MDM uses and handles pluggable keys.

Before OSGi

If you created a custom primary key or other key generator, you would have configured it in the TCRM_Extension.properties as follows:
id_factory_questionnaire = com.mycompany.MyQuestionnaireIDFactory
id_factory_question = com.mycompany.MyQuestionIDFactory
id_factory = com.mycompany.MyIDFactory

For every entity in which you chose to implement a pluggable key, you would have prefixed the entityname (for example, questionnaire) with the string id_factory. InfoSphere MDM would recognize this setting and know to use the com.mycompany.MyQuestionnaireIDFactory as the pluggable ID generator for the questionnaire entity.

With OSGi

If you’ve chosen to use your own default id factory in InfoSphere MDM, you must define a corresponding blueprint for your generic key generator as follows:
<service id="IDFactory" 
	interface="com.ibm.mdm.common.servicefactory.api.CommonServiceFactory">
	<service-properties>
		<entry key="common.service" value="IDFactory"/>
	</service-properties>
	<bean class="com.ibm.mdm.common.servicefactory.CommonServiceFactoryImpl">
		<argument type="java.lang.Class" value="com.dwl.base.IDWLIDFactory"/>
		<argument type="java.lang.Class" value="x.y.z.MyIDFactory"/>
		<argument ref="blueprintBundle"/>			
	</bean>
</service>	
If you’ve created an entity-specific ID generator, you’ll need to supply the following for each entity or table having its unique id factory:
<service id="IDFactory" 
	interface="com.ibm.mdm.common.servicefactory.api.CommonServiceFactory">
	<service-properties>
		<entry key="common.service" value="IDFactory.tablename"/>
	</service-properties>
	<bean class="com.ibm.mdm.common.servicefactory.CommonServiceFactoryImpl">
		<argument type="java.lang.Class" value="com.dwl.base.IDWLIDFactory"/>
		<argument type="java.lang.Class" value="x.y.z.MyIDFactoryForTableName"/>
		<argument ref="blueprintBundle"/>			
	</bean>
</service>