<?xml version="1.0" encoding="UTF-8"?><driver-configuration dn="Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" driver-set-dn="Serveur IdM.Services.zsp.gouv.qc.ca" name="Oracle-Ora10gR2">
	<attributes>
		<application-schema>
			<schema-def dn-format="ldap" hierarchical="false" jdbc:number-of-classes="3" jdbc:number-of-visible-tables="3">
				<class-def class-name="IDMUSER.VIEW_ORCLPRIVS" container="false">
					<attr-def attr-name="PK_GRANTEE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="true" jdbc:position="1" jdbc:size="30" multi-valued="false" naming="true"/>
					<attr-def attr-name="PK_GRANTED_ROLE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="2" jdbc:size="30" multi-valued="false" naming="true" required="true"/>
					<attr-def attr-name="ADMIN_OPTION" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="true" jdbc:position="3" jdbc:size="3" multi-valued="false"/>
					<attr-def attr-name="DEFAULT_ROLE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="true" jdbc:position="4" jdbc:size="3" multi-valued="false"/>
				</class-def>
				<class-def class-name="IDMUSER.VIEW_ORCLROLES" container="false">
					<attr-def attr-name="PK_ROLE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="1" jdbc:size="30" multi-valued="false" naming="true" required="true"/>
					<attr-def attr-name="PASSWORD_REQUIRED" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="true" jdbc:position="2" jdbc:size="8" multi-valued="false"/>
				</class-def>
				<class-def class-name="IDMUSER.VIEW_ORCLUSERS" container="false">
					<attr-def attr-name="PK_USERNAME" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="1" jdbc:size="30" multi-valued="false" naming="true" required="true"/>
					<attr-def attr-name="USER_ID" jdbc:java-type="java.sql.Types.DECIMAL" jdbc:native-type="NUMBER" jdbc:nullable="false" jdbc:position="2" jdbc:size="22" multi-valued="false" required="true" type="int"/>
					<attr-def attr-name="ACCOUNT_STATUS" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="3" jdbc:size="32" multi-valued="false" required="true"/>
					<attr-def attr-name="LOCK_DATE" jdbc:java-type="java.sql.Types.TIMESTAMP" jdbc:native-type="DATE" jdbc:nullable="true" jdbc:position="4" jdbc:size="7" multi-valued="false" type="time"/>
					<attr-def attr-name="EXPIRY_DATE" jdbc:java-type="java.sql.Types.TIMESTAMP" jdbc:native-type="DATE" jdbc:nullable="true" jdbc:position="5" jdbc:size="7" multi-valued="false" type="time"/>
					<attr-def attr-name="DEFAULT_TABLESPACE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="6" jdbc:size="30" multi-valued="false" required="true"/>
					<attr-def attr-name="TEMPORARY_TABLESPACE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="7" jdbc:size="30" multi-valued="false" required="true"/>
					<attr-def attr-name="CREATED" jdbc:java-type="java.sql.Types.TIMESTAMP" jdbc:native-type="DATE" jdbc:nullable="false" jdbc:position="8" jdbc:size="7" multi-valued="false" required="true" type="time"/>
					<attr-def attr-name="PROFILE" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="false" jdbc:position="9" jdbc:size="30" multi-valued="false" required="true"/>
					<attr-def attr-name="INITIAL_RSRC_CONSUMER_GROUP" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="true" jdbc:position="10" jdbc:size="30" multi-valued="false"/>
					<attr-def attr-name="EXTERNAL_NAME" jdbc:java-type="java.sql.Types.VARCHAR" jdbc:native-type="VARCHAR2" jdbc:nullable="true" jdbc:position="11" jdbc:size="4000" multi-valued="false"/>
				</class-def>
			</schema-def>
		</application-schema>
		<configuration-manifest>
			<manifest>
				<capability name="password-subscribe"/>
				<capability name="password-check"/>
			</manifest>
		</configuration-manifest>
		<global-config-values>
			<configuration-values>
				<definitions>
					<header display-name="Password GCVs"/>
					<definition display-name="Application accepts passwords from IDM" name="enable-password-subscribe" type="boolean">
						<description>If true, allows passwords to flow from the IDM data store to the connected system.</description>
						<value>true</value>
					</definition>
					<definition display-name="IDM accepts passwords from application" name="enable-password-publish" type="boolean">
						<description>If true, allows passwords to flow from the connected system to the IDM data store.</description>
						<value>true</value>
					</definition>
					<definition display-name="Publish passwords to NDS password" name="publish-password-to-nds" type="boolean">
						<description>Use the password from the connected system to set the non-reversible NDS password in eDirectory.</description>
						<value>true</value>
					</definition>
					<definition display-name="Publish passwords to Distribution Password" name="publish-password-to-dp" type="boolean">
						<description>Use the password from the connected system to set the NMAS Distribution Password used for IDM password synchronization.</description>
						<value>false</value>
					</definition>
					<definition display-name="Require password policy validation before publishing passwords" name="enforce-password-policy" type="boolean">
						<description>If true, applies NMAS password policies during publish password operations. Password is not written to the data store if it does not comply.</description>
						<value>true</value>
					</definition>
					<definition display-name="Reset user's external system password to the IDM password on failure" name="reset-external-password-on-failure" type="boolean">
						<description>If true, on a publish Distribution Password failure, attempt to reset the password in the connected system using the Distribution Password from the IDM data store.</description>
						<value>true</value>
					</definition>
					<definition display-name="Notify the user of password synchronization failure via e-mail" name="notify-user-on-password-dist-failure" type="boolean">
						<description/>
						<value>true</value>
					</definition>
					<definition display-name="Connected System or Driver Name" name="ConnectedSystemName" type="string">
						<description>The name of the connected system, application or IDM driver. This value is used by the e-mail notification templates.</description>
						<value xml:space="preserve">Ora10gR2</value>
					</definition>
					<header display-name="Other GCVs"/>
					<definition display-name="Sync first or last replica value?" name="replica-value" type="enum">
						<description>Synchronize the first or last replica value of multi-valued attributes mapped to single-valued columns?</description>
						<enum-choice display-name="first">first</enum-choice>
						<enum-choice display-name="last">last</enum-choice>
						<value>first</value>
					</definition>
					<definition display-name="UsersOU" name="UsersOU" type="string">
						<value>\META\ca\novl\Users</value>
						<description/>
					</definition>
					<definition display-name="OracleOU" name="OracleOU" type="string">
						<value>\META\ca\novl\Oracle</value>
						<description/>
					</definition>
					<definition display-name="ControlGroupOU" name="ControlGroupOU" type="string">
						<value>ca\novl\Oracle</value>
						<description/>
					</definition>
					<definition display-name="OracleOU-noTree" name="OracleOU-noTree" type="string">
						<value>ca\novl\Oracle</value>
						<description/>
					</definition>
				</definitions>
			</configuration-values>
		</global-config-values>
		<global-engine-values>
			<configuration-values>
				<definitions>
					<definition display-name="Subscriber channel retry interval in seconds" display-name-ref="ecnm_rint" name="dirxml.engine.retry-interval" range-lo="1" type="integer">
						<description description-ref="ecds_rint">The subscriber channel retry interval controls how frequently the DirXML Engine will retry the processing of a cached transaction after the application shim's Subscriber object returns a retry status.</description>
						<value>30</value>
					</definition>
					<definition display-name="Qualified form for DN-syntax attribute values" display-name-ref="ecnm_dnvf" name="dirxml.engine.qualified-dn-values" type="boolean">
						<description description-ref="ecds_dnvf">The qualified form for DN-syntax attribute values controls whether values for DN-syntax attribute values are presented in unqualified slash form or qualified slash form. A "true" setting means the values are presented in qualified form.</description>
						<value>false</value>
					</definition>
					<definition display-name="Qualified form for rename events" display-name-ref="ecnm_refm" name="dirxml.engine.qualified-rename-values" type="boolean">
						<description description-ref="ecds_refm">The qualified form for rename events controls whether the new-name portion of rename events coming from the Identity Vault are presented to the Subscriber channel with type qualifier(s) (e.g. CN=). A "true" setting means the names are presented in qualified form.</description>
						<value>false</value>
					</definition>
					<definition display-name="Maximum eDirectory replication wait time in seconds" display-name-ref="ecnm_mrpw" name="dirxml.engine.max-replication-wait" range-lo="1" type="integer">
						<description description-ref="ecds_mrpw">The maximum eDirectory replication wait time controls the maximum time that the DirXML Engine will wait for a particular change to replicate between the local replica and a remote replica. This only affects operations where the DirXML Engine is required to contact a remote eDirectory server in the same tree to perform an operation and may need to wait until some change has replicated to or from the remote server before the operation can be completed (e.g. object moves when the DirXML server does not hold the master replica of the moved object ;file system rights operations for Users created from a template.)</description>
						<value>180</value>
					</definition>
					<definition display-name="Use non-compliant backwards-compatible mode for XSLT" display-name-ref="ecnm_xbcm" name="dirxml.engine.xslt-bc-mode" type="boolean">
						<description description-ref="ecds_xbcm">This control sets the XSLT processor used by the DirXML Engine to a backwards-compatible mode. The backwards-compatible mode causes the XSLT processor to use one or more behaviors that are not XPath 1.0 and/or XSLT 1.0 standards-compliant. This is done in the interest of backwards-compatiblity with existing DirXML stylesheets that depend on the non-standard behavior(s). 
 
 In particular: 
 
 The behavior of the XPath "!=" operator when one operand is a node-set and the other operand is other than a node-set is incorrect in DirXML releases up to and including DirXML 2.0 (Novell Identity Manager 2.0). This behavior has been corrected; however, the corrected behavior is disabled by default through this control in favor of backwards-compatibility with existing DirXML stylesheets.</description>
						<value>true</value>
					</definition>
					<definition display-name="Maximum application objects to migrate at once" display-name-ref="ecnm_mxappm" name="dirxml.engine.max-migrate-app-count" range-lo="1" type="integer">
						<description description-ref="ecds_mxappm">This control is used to limit the number of application objects that the DirXML Engine will request from an application during a single query that is performed as part of a "migrate objects from application" operation. 
 
 If "java.lang.OutOfMemoryError" errors are encountered during a migrate from application operation then this number should be set lower than the default. 
 
 Note that this control does not limit the number of application objects that can be migrated; it merely limits the "batch size".</description>
						<value>50</value>
					</definition>
					<definition display-name="Set creatorsName on objects created in Identity Vault" display-name-ref="ecnm_scrnm" name="dirxml.engine.set-creators-name" type="boolean">
						<description description-ref="ecds_scrnm">This control is used by the DirXML Engine to determine if the creatorsName attribute should be set to the DN of this driver on all objects created in the Identity Vault by this driver.
 
 Setting the creatorsName attribute allows for easily identifying objects created by this driver, but also carries a performance penalty. If not set, the creatorsName attribute will default to the DN of the NCP Server object that is hosting the driver.</description>
						<value>false</value>
					</definition>
					<definition display-name="Write pending associations" display-name-ref="ecnm_pass" name="dirxml.engine.use-pending-association" type="boolean">
						<description description-ref="ecds_pass">This control determines whether the DirXML Engine will write a pending association on an object during subscriber channel processing.
 
 Writing a pending association confers little or no benefit but does incur a performance penalty. Nevertheless, the option exists to turn it on for backward compatibility.</description>
						<value>false</value>
					</definition>
					<definition display-name="Use password event values" display-name-ref="ecnm_pevvl" name="dirxml.engine.use-password-event-values" type="boolean">
						<description description-ref="ecds_pevvl">This control determines the source of the value reported for the nspmDistributionPassword attribute for subscriber channel add and modify events.
 
 Setting the control to false means that the current value of nspmDistributionPassword is obtained and reported as the value of the attribute event. This means that only the current password value is available. This is the default behavior.
 
 Setting the control to true means that the value recorded with the eDirectory event will be decrypted and reported as the value of the attribute event. This means that both the old password value (if it exists) and the replacement password value at the time of the event are available. This is useful for synchronizing passwords to certain applications that require the old password to enable setting a new password.</description>
						<value>false</value>
					</definition>
					<definition display-name="Enable password synchronization status reporting" display-name-ref="ecnm_pss" name="dirxml.engine.pwd-sync-status" type="boolean">
						<description description-ref="ecds_pss">This control determines whether the DirXML Engine will report the status of subscriber channel password change events. 
 
 Reporting the status of subscriber channel password change events allows applications such as the Identity Manager User Application to monitor the synchronization progress of a password change that should be synchronized to the connected application.</description>
						<value>true</value>
					</definition>
				</definitions>
			</configuration-values>
		</global-engine-values>
		<driver-filter-xml>
			<filter>
				<filter-class class-name="User" publisher="sync" publisher-create-homedir="true" publisher-track-template-member="false" subscriber="sync">
					<filter-attr attr-name="nspmDistributionPassword" merge-authority="none" publisher="ignore" publisher-optimize-modify="false" subscriber="notify"/>
					<filter-attr attr-name="Group Membership" merge-authority="default" publisher="ignore" publisher-optimize-modify="true" subscriber="notify"/>
					<filter-attr attr-name="CN" merge-authority="default" publisher="sync" publisher-optimize-modify="true" subscriber="notify"/>
				</filter-class>
				<filter-class class-name="Group" publisher="sync" publisher-create-homedir="true" publisher-track-template-member="false" subscriber="sync">
					<filter-attr attr-name="Group Membership" from-all-classes="true" merge-authority="default" publisher="ignore" publisher-optimize-modify="true" subscriber="notify"/>
					<filter-attr attr-name="OrclSID" from-all-classes="true" merge-authority="default" publisher="ignore" publisher-optimize-modify="true" subscriber="notify"/>
					<filter-attr attr-name="CN" merge-authority="default" publisher="sync" publisher-optimize-modify="true" subscriber="notify"/>
				</filter-class>
				<filter-class class-name="OrclPriv" publisher="sync" publisher-create-homedir="true" publisher-track-template-member="false" subscriber="ignore">
					<filter-attr attr-name="OrclGrantedRole" from-all-classes="true" merge-authority="default" publisher="sync" publisher-optimize-modify="true" subscriber="ignore"/>
					<filter-attr attr-name="OrclGrantee" from-all-classes="true" merge-authority="default" publisher="sync" publisher-optimize-modify="true" subscriber="ignore"/>
				</filter-class>
			</filter>
		</driver-filter-xml>
		<driver-image><![CDATA[R0lGODlhYgBPAMQfAP///9LR0eeZo+np6be1tpGPkbtqczo6OkpKSmtqasK74gICAt97hqae2R8eHpmR0vLx8rKr1PG4vtXQ6+Ph9MKLkrax4vnc3+Hh4byUwXJFSWA6PpNSWf3v8ff3+P///yH5BAEAAB8ALAAAAABiAE8AAAX/4CeOZGmeaKqu6UAUCXI4B5IQmMfufO/vgYRjsXDQDjPiAkH4OZ9QE0RYvAUwEM8g8DoQEYGoeLwKeB2FAWDNbkMI5wJ5Tg8ME+q2vu0pEOV0gU8YQwV7h3p2C02CjTsACAuGbS4FMAkFBAEQegRFYY6hKH4IHm0vmJaqlgF6pDqisSIeRq1rb6mZBLu7lgSmax6RjLKifgmnqbwBzFy9BKdLsCYBMDII2Nna29zd3t/fRhhsBMrMGBgDA+jML7YAwgsY1FRFRvf4+fr7/P3+NO8gqNKUDkIWDwbXOeO0xg8xEQSGHChQEKHBixgzatzIsWPHNtUyXTnIByEGLu88/yUg4UkSMEQwY8qcKfMFwSyITDJjQ+jACEKLaAodSvSQrwADXh7SsvPWjFkJJM30SLXqRnVqBkDQmoeNLixK9+hk42GGDgwLDnQ9hOHFqrdw48qNm0CDhgR482JSKhLL1JNkZwz44GkSonK55ipWzKFxqsZz3wEQmXQmUzYDBH+ICg1RkIG8QoseTZqXAQ4GKpg2UHqXZNeVZWoZt8aO2g8IHEimBLqZ79/AgzOrYCC1bwIM2gXfBfLm366eEAzOTXuPW9fosGrfzp27AAYMBGxnIGGABPHbT/5i8wYHTpgIY0+WBAG3g7VkfWnSetCD//8ABijgeQIIEOAFBnpwnv+AEJwkGUryLaUVZl78Yh9+wRylVVhFASABAxcwsIcAEqwhQYl6MBWAUue8J9ZW0YAhQm4YwtOXix2yAWKBI16whgA+pthgU8G06F9JBrlRyDwXLkUZhx2SCACQeiDIhgAdABAkWVsQgCJPV/DnH0Z6RMXECDQ6uR+URHXAgAch7nEBiudpKYCQbRlQXTDrZKcOjvM5gAOa96mJFDAVIpoWEkgQMVFX5xFxRFoJwIkiiQTkhgQNN2yVmiYd+oEGKDMWKtaT8FR4UIXpYBUEEesBSYQA6QQQSQInamnADAWAp05E94HHRWo1HvIqGhYSWmMfa6YqCVheFHAOO9UQgQH/gh4QUcE5AWh7gQcVpEWcAQF81w54EpxUnCZsroEBFRMRUB8JaZ7abFmSIAVBtGGq4+Ct5UKg7RUnebHtAEOgBt7CEgRgAANYQMAAa9cReUtUVewyL72mpojqvvlqxW/ECWHgxwLlDkAEuVr1RK6o5C580XdafQhxO24Z1lARTLB7Qr0eNwuytCKH/BJC3UrCgMoLkMtJYeQOoQEBxN2JYIJXh7eVg72UiewmKQDNx8f8Fk20Ulr8AfHKtBYwKmt/EHfB1RL4+GGJDHQwpkLMtSGEvACoIHZ+Qpc99KF6MF2AnpIasYS0DxORALnnffmh3XcGEx8XXj+EwuAZFh7y/+ERAiCwJAZIACtyBmywROQLaGAAjwCQd16QdfIxZOcsgG6j6ESTHlZLVIe7iCYCGCA1A1I/bAq6ebNhZYpb8L6C78wiTrrwriyhCQOwEvzqBgFo8HpS4NW+JQAdZM5H9X4L2nvHYwOvb9lKISwJ8uFzFdUGBODAHzDwnSl9iQ2549Ju/ja/ZZFtdPjz2wKskI7wcQJkqDGA+RxQARC5iQ2SIc/7Fii/69GPcNozXAQBAIf97YdprDFIVBIwLgNgTAMe4FEQSgEMBG3pMvHz3M9OGLoULuJ+RWAUo6TVjByc7h5pKU5xJraLDdwDCQhIg4umBw/4sYGBJnSg0NKyn/8hEQQr1BqJ6ZwRgPNMTDXmAc+6ylWePm0IgSgC4hdLKDgi/g5xfhBJFrbQRHQ4qCLwcBC3mLGh8EjgYaoRAMHSEZYg6XENYOyjGJGyQ01cYW9+2o6L4hNKdfznOwT6UIHKQxIJkVCIJsDek1RESXhYJCNHStEtDUIBClxgAhN4gAAykIEHXAACJCIRhyhggQY04AEP0BkAMhk2P2aPP3ZsF00goAALeNMCE6AAnEAEgVzVTUsSyBIbFODMZ0JTmtT8nDVneRFtxsQD7PSmAsQJD2ASMwIKUACWzumhzOETmgh9Jjz5WM1NJgVAOQJAMB/wTWACUwHAJNGcIEDMB0z/4AIKKGYEGmABhFqgmxBowEJhWQJZNiui6yQpNNvpzoS2s6QIzWk3H6AANlAgAg+IgPU0aajSRbSbz/xmM5sZVJIylaIkjQCVPNAAhtwCmq9sYFHtOZRe6pMT/iFRL8cKojWEqEQemIAFMnDSNZR0AlkN41Zhyge24pSiaxVAL2eWuRAJ4K4e5ScAeDoAoQZRq/ZCHF11Bw923lSfEchAT+8GDwoAqplaeMBQGzrXxfJhAkkN6ASkV1Y3rW8P7PSPSjcrT4dylSgTtQCHckUWX3azp+uULQCKids9spRjrvUsHxqwU7wq1Zskdao3RwsAy+LTFAqIAFxZO8QaDQBV/8L1qUkDyt3uYhSYEKDABOxKgdwOYAIrRWzQFJtdADSzuMeNrz7DWV6y7BOomj2sXBNrVLpSFZjgpAkFumkBPUCgpA0AjH6Jyt/XEoUCNSWpaLlrV2culw0T2Ck4LzlNhra2s+3d7QNqmlNoflO0GfYmPk8KDA7Hs7ogbu83k8pU5SI3pxaoL/XiyuD19jdH4eUnYG3azpw2gLmupG4s/cjCl0YUn+4kaX2pSmRn2tSbpx2hklvKZJT4JUfMnKkCoJTWIc/0m5aFT2G3zLE98WEXYOkQBEYMWh3LxsFukC6bRyCE3VDiJrkUygAasAYFjHi+F7BskvbAkVuYLrzR5cPpHnLzWz4LKiYQOAd/rAKBCOA3AgNgq6c9XeJSm/rU0NTzHmrBgsLIZmvdibU6ojvqWnua1rX2rq1tHVDp3tE6aWGSCgjB5BAbmya3GswKpimVYzt7KJ4Q1DSGXaFnWzsmipBWDyIyQTdf+9lvuEMrfMDtr/XJkOhOt7rXze52u/vdL4jEBOXlBJMp4R/4zre+9w3FtEhrY/UuhwyUSPCCG/zgCE+4wglug0zkgA6zEY7EJ07xiltcjcXIuMY3znFBhAAAOw0K]]></driver-image>
		<java-module value="com.novell.nds.dirxml.driver.jdbc.JDBCDriverShim"/>
		<driver-start-option value="1"/>
		<driver-cache-limit value="0"/>
		<shim-auth-id value="idmUser"/>
		<shim-auth-server value="jdbc:oracle:thin:@192.168.1.162:1521:Ora10gR2"/>
		<shim-config-info-xml>
			<driver-config name="JDBC IDM Driver">
				<driver-options>
					<configuration-values>
						<definitions>
							<definition display-name="Third-party JDBC driver class name:" name="jdbc-class" type="string">
								<description>Enter the class name of your third-party JDBC driver.  Verify that the jar/zip file containing this class is version compatible with the target database.</description>
								<value>oracle.jdbc.driver.OracleDriver</value>
							</definition>
							<group>
								<!-- NOTE:  you have to give all params a name, even if they're not relevant to actual driver configuration -->
								<definition display-name="Show database scoping parameters?" name="ignore1" type="enum">
									<description>Show parameters that control how much of the database is visible to this driver?</description>
									<enum-choice display-name="show">show</enum-choice>
									<enum-choice display-name="hide">hide</enum-choice>
									<value>show</value>
								</definition>
								<subordinates active-value="show">
									<group>
										<definition display-name="Synchronization filter:" name="sync-filter" type="enum">
											<description>On start-up, the driver caches database metadata on a limited number of tables/views to facilitate data synchronization.  You can cache no table/view metadata (exclude all tables/views), cache metadata on all tables/views owned by a single database user (include by schema membership) or cache metadata on an explicit list of table/view names (include by table/view name).  If no table/view metadata is cached, the driver acts as a pass-through agent for embedded SQL.  In this state, standard XDS events (e.g., add, modify, delete) are ignored.</description>
											<enum-choice display-name="exclude all tables/views">empty</enum-choice>
											<enum-choice display-name="include by schema membership">schema</enum-choice>
											<enum-choice display-name="include by table/view name">list</enum-choice>
											<value>list</value>
										</definition>
										<subordinates active-value="schema">
											<definition display-name="Schema name:" name="sync-schema" type="string">
												<description>Enter the name of the database schema that contains the tables/views to synchronize.  Schema is usually synonymous with ownership.  For example, if database user 'idm' owns table 'table1', 'table1' is said to be part of the 'idm' schema. </description>
												<value/>
											</definition>
											<group>
												<definition display-name="Use custom regular expression filters?" name="ignore2" type="enum">
													<description>Do you want to use regular expressions to include or exclude tables/views?  These parameters are useful when synchronizing with a large schema and you need to reduce the number of tables/view definitions cached by this driver.  Schema filtering can reduce start-up time as well as reduce runtime memory utilization.</description>
													<enum-choice display-name="yes">1</enum-choice>
													<enum-choice display-name="no">0</enum-choice>
													<value>0</value>
												</definition>
												<subordinates active-value="1">
													<definition display-name="Include filter expression:" name="include-table-filter" type="string">
														<description>Specify a Java regular expression filter for including tables/views.</description>
														<value/>
													</definition>
													<definition display-name="Exclude filter expression:" name="exclude-table-filter" type="string">
														<description>Specify a Java regular expression filter for excluding tables/views.</description>
														<value/>
													</definition>
												</subordinates>
											</group>
										</subordinates>
										<subordinates active-value="list">
											<definition display-name="Table/view names:" name="sync-tables" type="string">
												<description>Enter the names of the tables/views to synchronize.  You may need to schema-qualify these names (e.g., owner.table).  Multiple values should be semicolon, comma, or space-delimited.  This parameter is useful if you need to reduce the number of table/view definitions cached by this driver, which can shorten driver start-up time as well as reduce runtime memory utilization.  It is also useful when synchronizing tables/views that reside in different database schemas (that is, are owned by multiple database users).</description>
												<value>idmUser.view_ORCLUSERS; idmUser.view_ORCLROLES,idmUser.view_ORCLPRIVS</value>
											</definition>
										</subordinates>
									</group>
								</subordinates>
							</group>
							<definition display-name="Time syntax:" name="time-syntax" type="enum">
								<description>Return time-related data types as integers, canonical strings, or Java strings?  The advantage of returning time values as integers is that integer values easily map to eDirectory's native time data types.  The disadvantage is the limited range.  An integer value that represents the number of seconds since 1970 can cover a date range from about 1910 to 2030 if interpreted as a signed value.  By default, however, Identity Manager interprets time-related integer data types as unsigned values.  String timestamps, on the other hand, can cover a much broader range, like database timestamps, and are more precise, but must be mapped to string data types in Identity Manager.  Canonical string timestamps, dates, and times are published in the following formats:  CCYYMMDDHHMMSSNNNNNNNNN, CCYYMMDD and HHMMSS, respectively (where C = century, Y = year, M = month or minute, D = day, H = hour, S = second, N = nano).  These  fixed-length formats have the virtue of collating in chronological order on any platform in any locale.  Java string timestamps, dates, and times are published in the following formats:  yyyy-mm-dd hh:mm:ss.fffffffff, yyyy-mm-dd and hh:mm:ss, respectively (where y = year, m = month or minute, d = day, h = hour, s = second, f = nano).</description>
								<enum-choice display-name="integer (default)">_</enum-choice>
								<enum-choice display-name="canonical string">2</enum-choice>
								<enum-choice display-name="java string">3</enum-choice>
								<value>_</value>
							</definition>
							<definition display-name="State directory:" name="state-dir" type="string">
								<description>What's the path of the folder where you want this driver to store state information?  Changing this value when using triggerless publication can force a resync of all objects.</description>
								<value>.</value>
							</definition>
							<group>
								<definition display-name="Show connectivity parameters?" name="ignore11" type="enum">
									<description>Show connectivity-related parameters?</description>
									<enum-choice display-name="show">show</enum-choice>
									<enum-choice display-name="hide">hide</enum-choice>
									<value>hide</value>
								</definition>
								<subordinates active-value="show">
									<definition display-name="Use minimal number of connections?" name="use-single-connection" type="enum">
										<description>Should the Subscriber and Publisher share a database connection?  Normally, this driver uses three database connections when both channels are enabled (one subscription connection and two publication connections).  This parameter reduces the number of required connections to two (one dedicated publication connection and one shared subscription/publication connection).</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="yes">1</enum-choice>
										<enum-choice display-name="no">0</enum-choice>
										<value>_</value>
									</definition>
									<definition display-name="Connection initialization statements:" name="connection-init" type="string">
										<description>What SQL statements, if any, should be executed immediately after connecting to the database?  Multiple values should be semicolon-delimited.  This parameter is useful for changing database contexts or setting session properties.</description>
										<value/>
									</definition>
									<definition display-name="Connection properties:" name="connection-properties" type="string">
										<description>List connection properties as key value pairs.  For example:  key=value.  Multiple values should be delimited by a semi-colon.  For example:  key1=value1; key2=value2.</description>
										<value/>
									</definition>
								</subordinates>
							</group>
							<group>
								<definition display-name="Show compatibility parameters?" name="ignore3" type="enum">
									<description>Show parameters that can adjust adjust driver behavior to enhance compatibility with various third-party JDBC implementations and databases?</description>
									<enum-choice display-name="show">show</enum-choice>
									<enum-choice display-name="hide">hide</enum-choice>
									<value>hide</value>
								</definition>
								<subordinates active-value="show">
									<group>
										<definition display-name="Use custom descriptor files?" name="ignore4" type="enum">
											<description>Do you want to use custom XML descriptor files that describe the unique properties of your third-party JDBC implementation or database to this driver?</description>
											<enum-choice display-name="yes">1</enum-choice>
											<enum-choice display-name="no">0</enum-choice>
											<value>0</value>
										</definition>
										<subordinates active-value="1">
											<definition display-name="JDBC driver descriptor filename:" name="jdbc-driver-descriptor" type="string">
												<description>Specify the name of the descriptor file for your third-party JDBC driver.  The filename must have the extension .xml and be located in a jar file whose name begins with "jdbc" (case-insensitive) and in the runtime classpath.</description>
												<value/>
											</definition>
											<definition display-name="Database descriptor filename:" name="database-descriptor" type="string">
												<description>Specify the name of the descriptor file for the target database.  The filename must have the extension .xml and be located in a jar file whose name begins with "jdbc" (case-insensitive) and in the runtime classpath.</description>
												<value/>
											</definition>
										</subordinates>
									</group>
									<group>
										<definition display-name="Show backward compatibility parameters?" name="ignore12" type="enum">
											<description>Show parameters that ensure backward compatibility?</description>
											<enum-choice display-name="show">show</enum-choice>
											<enum-choice display-name="hide">hide</enum-choice>
											<value>hide</value>
										</definition>
										<subordinates active-value="show">
											<definition display-name="Enable table referential attribute support?" name="enable-refs" type="enum">
												<description>Should table columns constrained with foreign key constraints be interpreted as referential attributes?  Referrential attributes allow relationships, such as containment, to exist between tables.  For 1.0 backwards compatibility, referential attribute support should be disabled.</description>
												<enum-choice display-name="yes (default)">_</enum-choice>
												<enum-choice display-name="no">0</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Enable view meta-identifier support?" name="enable-meta-identifiers" type="enum">
												<description>Should view column name prefixes (e.g., "pk_", "fk_", "sv_", "mv_") be interpreted as metadata?  When enabled, said prefixes are not considered part of view column names.  Meta-identifiers allow one to define referrential relationships between views and mark view columns as multi or single-valued.  For 1.5 backwards compatibility, meta-identifier support should be disabled.</description>
												<enum-choice display-name="yes (default)">_</enum-choice>
												<enum-choice display-name="no">0</enum-choice>
												<value>_</value>
											</definition>
										</subordinates>
									</group>
									<group>
										<definition display-name="Show transaction-related parameters?" name="ignore5" type="enum">
											<description>Show transaction-related parameters?</description>
											<enum-choice display-name="show">show</enum-choice>
											<enum-choice display-name="hide">hide</enum-choice>
											<value>hide</value>
										</definition>
										<subordinates active-value="show">
											<definition display-name="Use manual transactions?" name="use-manual-transactions" type="enum">
												<description>Should this driver use transactions?  Are transactions supported by the target database or table implementation you are using?</description>
												<enum-choice display-name="dynamic default">_</enum-choice>
												<enum-choice display-name="yes">1</enum-choice>
												<enum-choice display-name="no">0</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Transaction isolation level:" name="transaction-isolation-level" type="enum">
												<description>Use this parameter to set advanced transaction properties.  For additional information on what these values mean, please refer to the JDBC tutorial at  http://java.sun.com/docs/books/tutorial/jdbc/basics/transactions.html and the documentation of your third-party JDBC driver or database.</description>
												<enum-choice display-name="dynamic default">_</enum-choice>
												<enum-choice display-name="unsupported">unsupported</enum-choice>
												<enum-choice display-name="none">none</enum-choice>
												<enum-choice display-name="read uncomitted">read uncommitted</enum-choice>
												<enum-choice display-name="read comitted">read committed</enum-choice>
												<enum-choice display-name="repeatable read">repeatable read</enum-choice>
												<enum-choice display-name="serializable">serializable</enum-choice>
												<value>read committed</value>
											</definition>
										</subordinates>
									</group>
									<group>
										<definition display-name="Show statement-related parameters?" name="ignore6" type="enum">
											<description>Show statement-related parameters?</description>
											<enum-choice display-name="show">show</enum-choice>
											<enum-choice display-name="hide">hide</enum-choice>
											<value>hide</value>
										</definition>
										<subordinates active-value="show">
											<definition display-name="Reuse statements?" name="reuse-statements" type="enum">
												<description>Should this driver reuse java.sql.Statement objects or close and reallocate them with each use?</description>
												<enum-choice display-name="dynamic default">_</enum-choice>
												<enum-choice display-name="reuse">1</enum-choice>
												<enum-choice display-name="close and reallocate">0</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Number of returned result sets:" name="handle-stmt-results" type="enum">
												<description>How many result sets can be returned from an SQL statement?</description>
												<enum-choice display-name="dynamic default">_</enum-choice>
												<enum-choice display-name="none">none</enum-choice>
												<enum-choice display-name="one">single</enum-choice>
												<enum-choice display-name="multiple">multiple</enum-choice>
												<value>_</value>
											</definition>
											<group>
												<definition display-name="Enable statement-level locking?" name="enable-locking" type="enum">
													<description>Should this driver explicitly lock database resources before executing each statement?</description>
													<enum-choice display-name="no (default)">0</enum-choice>
													<enum-choice display-name="yes">1</enum-choice>
													<value>0</value>
												</definition>
												<subordinates active-value="1">
													<group>
														<definition display-name="Use custom lock statement generator class?" name="ignore13" type="enum">
															<description>Do you want to use a custom class to generate locking statements?</description>
															<enum-choice display-name="yes">1</enum-choice>
															<enum-choice display-name="no">0</enum-choice>
															<value>0</value>
														</definition>
														<subordinates active-value="1">
															<definition display-name="Lock statement generator class:" name="lock-generator-class" type="string">
																<description>Specify the name of the class used to generate locking statements.</description>
																<value/>
															</definition>
														</subordinates>
													</group>
												</subordinates>
											</group>
										</subordinates>
									</group>
									<definition display-name="Force username case:" name="force-username-case" type="enum">
										<description>What case should the authentication username be in?</description>
										<enum-choice display-name="don't force (default)">_</enum-choice>
										<enum-choice display-name="to upper case">upper</enum-choice>
										<enum-choice display-name="to mixed case">mixed</enum-choice>
										<enum-choice display-name="to lower case">lower</enum-choice>
										<value>_</value>
									</definition>
									<definition display-name="Left outer-join operator:" name="left-outer-join-operator" type="enum">
										<description>Choose a left outer-join operator.</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="*=">*=</enum-choice>
										<enum-choice display-name="(+)">(+)</enum-choice>
										<enum-choice display-name="LEFT OUTER JOIN">LEFT OUTER JOIN</enum-choice>
										<value>_</value>
									</definition>
									<definition display-name="Retrieve minimal metadata?" name="minimal-metadata" type="enum">
										<description>Should this driver run using the least amount of database metadata possible?  This parameter is useful when a given third-party JDBC driver does not implement one of the optional metadata method normally utilized by this driver.  When set to no, referential data and child parent relationships are no longer available to this driver.</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="yes">1</enum-choice>
										<enum-choice display-name="no">0</enum-choice>
										<value>_</value>
									</definition>
									<definition display-name="Function return method:" name="function-return-method" type="enum">
										<description>How are results returned from database functions?</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="result set">result set</enum-choice>
										<enum-choice display-name="scalar return value">return value</enum-choice>
										<value>_</value>
									</definition>
									<definition display-name="Supports schemas in metadata retrieval?" name="supports-schemas-in-metadata-retrieval" type="enum">
										<description>Can schema names be used to retrieve database metadata?</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="yes">1</enum-choice>
										<enum-choice display-name="no">0</enum-choice>
										<value>_</value>
									</definition>
									<definition display-name="Sort column names by:" name="column-position-comparator" type="enum">
										<description>For legacy databases that don't support the notion of column position (DB2/AS400, for instance), a backup ordering algorithm must be employed.  Sorting columns names by hexadecimal value ensures that if the this driver is relocated to a different server, it will continue to function without modification.  Sorting column names by platform or locale string collation order is more intuitive, but may require configuration changes if a driver instance is relocated to a different server.  In particular, event log table column order and compound column name order may change.  In the case of the latter, the schema-mapping rule and object association values may need to be updated.  In the case of the former, event log table columns may have to be renamed.</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="hexadecimal value">com.novell.nds.dirxml.driver.jdbc.util.config.comp.StringByteComparator</enum-choice>
										<enum-choice display-name="string collation order">com.novell.nds.dirxml.driver.jdbc.util.config.comp.StringComparator</enum-choice>
										<value>_</value>
									</definition>
								</subordinates>
							</group>
						</definitions>
					</configuration-values>
				</driver-options>
				<subscriber-options>
					<configuration-values>
						<definitions>
							<group>
								<definition display-name="Disable subscriber?" name="disable" type="enum">
									<description>Do you want to ignore events flowing from Identity Manager to the database?</description>
									<enum-choice display-name="no (default)">_</enum-choice>
									<enum-choice display-name="yes">1</enum-choice>
									<value>_</value>
								</definition>
								<subordinates active-value="_">
									<group>
										<definition display-name="Show primary key parameters?" name="ignore10" type="enum">
											<description>Show parameters that control how and when primary key values are generated?</description>
											<enum-choice display-name="show">show</enum-choice>
											<enum-choice display-name="hide">hide</enum-choice>
											<value>show</value>
										</definition>
										<subordinates active-value="show">
											<definition display-name="Generation/retrieval method (table-global):" name="key-gen-method" type="enum">
												<description>How are primary key values being generated or retrieved?  This setting is global for all tables/views.</description>
												<enum-choice display-name="subscription event (default)">_</enum-choice>
												<enum-choice display-name="subscriber-generated">driver</enum-choice>
												<enum-choice display-name="auto-generated/identity column">auto</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Retrieval timing (table-global):" name="key-gen-timing" type="enum">
												<description>When should primary key values be retrieved?  Before or after row insertion?  This setting is global for all tables/views.</description>
												<enum-choice display-name="before row insertion (default)">_</enum-choice>
												<enum-choice display-name="after row insertion">after</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Method and timing (table-local):" name="key-gen" type="string">
												<description>Specify how and when primary key values are generated/retrieved on a per table/view basis.  This parameter overrides global method and timing settings.  Multiple values should be semicolon, comma, or space-delimited.</description>
												<value>view_ORCLUSERS(none)</value>
											</definition>
										</subordinates>
									</group>
									<definition display-name="Disable statement-level locking?" name="disable-locking" type="enum">
										<description>Disable statement locking?  Should explicit locking or database resources be disabled on this channel?</description>
										<enum-choice display-name="yes">1</enum-choice>
										<enum-choice display-name="no (default)">0</enum-choice>
										<value>0</value>
									</definition>
									<definition display-name="Add default values on view insert?" name="add-default-values-on-view-insert" type="enum">
										<description>Should the Subscriber add default values to insert operations on views?  This parameter is desirable for satisfying instead-of-trigger constraints that require non-null values be provided for non-nullable columns before instead-of-triggers fire.  This parameter has no effect on tables.</description>
										<enum-choice display-name="dynamic default">_</enum-choice>
										<enum-choice display-name="yes">1</enum-choice>
										<enum-choice display-name="no">0</enum-choice>
										<value>_</value>
										<!-- base on direct or indirect synchronization model -->
									</definition>
								</subordinates>
							</group>
						</definitions>
					</configuration-values>
				</subscriber-options>
				<publisher-options>
					<configuration-values>
						<definitions>
							<group>
								<definition display-name="Disable publisher?" name="disable" type="enum">
									<description>Do you want to ignore events flowing from the database to Identity Manager?</description>
									<enum-choice display-name="no (default)">_</enum-choice>
									<enum-choice display-name="yes">1</enum-choice>
									<value>_</value>
								</definition>
								<subordinates active-value="_">
									<group>
										<definition display-name="Publication mode:" name="publication-mode" type="enum">
											<description>Do you want to use triggered or triggerless publication?  Triggered publication uses database triggers to capture events and log them in a table.  Triggerless publication, in contrast, derives events by inspecting database tables/views.  Triggered publication is more efficient, but requires substantial database-side configuration.  Triggerless publication is less efficient, but requires minimal database-side configuration.</description>
											<enum-choice display-name="triggered">_</enum-choice>
											<enum-choice display-name="triggerless">2</enum-choice>
											<value>_</value>
										</definition>
										<subordinates active-value="_">
											<definition display-name="Event log table name:" name="log-table" type="string">
												<description>What's the name of the table where publication events are stored?</description>
												<value>idmUser.direct_process</value>
											</definition>
											<definition display-name="Delete processed rows?" name="delete-from-log" type="enum">
												<description>Should processed rows be deleted from the event log table?  There is a significant performance hit when processed rows are left in the event log table.  The performance cost can be mitigated by moving processed rows from the event log table into an event history table using the "Post polling statements:" parameter.</description>
												<enum-choice display-name="yes (default)">_</enum-choice>
												<enum-choice display-name="no">0</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Optimize updates?" name="optimize-update" type="enum">
												<description>Should the Publisher optimize update events before sending them to the engine?  When set to yes, all update events are optimized.  When set to no, select update events are not.  For a more complete explanation of this parameter, please consult the driver implementation guide.</description>
												<enum-choice display-name="no (default)">_</enum-choice>
												<enum-choice display-name="yes">1</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Allow loopback?" name="allow-loopback" type="enum">
												<description>Allow events initiated by the Subscriber channel to loopback on the Publisher channel?</description>
												<enum-choice display-name="no (default)">_</enum-choice>
												<enum-choice display-name="yes">1</enum-choice>
												<value>_</value>
											</definition>
											<definition display-name="Disable statement-level locking?" name="disable-locking" type="enum">
												<description>Disable statement locking?  Should explicit locking or database resources be disabled on this channel?</description>
												<enum-choice display-name="yes">1</enum-choice>
												<enum-choice display-name="no (default)">0</enum-choice>
												<value>0</value>
											</definition>
										</subordinates>
										<subordinates active-value="2">
											<definition display-name="Startup option:" name="startup-option" type="enum">
												<description>Determine the Publisher's behavior on start-up.</description>
												<enum-choice display-name="process all changes (default)">_</enum-choice>
												<enum-choice display-name="process future changes only">2</enum-choice>
												<enum-choice display-name="resync all objects">1</enum-choice>
												<value>_</value>
											</definition>
										</subordinates>
									</group>
									<group>
										<definition display-name="Enable future event processing?" name="handle-future-events" type="enum">
											<description>Process events in the event log table based upon their effective date as opposed to order of insertion (triggered publication) or publish database local time with each event (triggerless publication)?</description>
											<enum-choice display-name="no (default)">_</enum-choice>
											<enum-choice display-name="yes">1</enum-choice>
											<value>_</value>
										</definition>
										<subordinates active-value="1">
											<group>
												<definition display-name="Use custom timestamp statement?" name="ignore8" type="enum">
													<description>Do you want to specify a custom SQL statement that supplies the current time/date on the database server?  By default, a statement is dynamically derived.</description>
													<enum-choice display-name="yes">1</enum-choice>
													<enum-choice display-name="no">0</enum-choice>
													<value>0</value>
												</definition>
												<subordinates active-value="1">
													<definition display-name="Current timestamp statement:" name="current-timestamp-stmt" type="string">
														<description>What SQL statement should be used to determine the current time and date on the database server?"</description>
														<value/>
													</definition>
												</subordinates>
											</group>
										</subordinates>
									</group>
									<group>
										<definition display-name="Show polling-related parameters?" name="ignore9" type="enum">
											<description>Show parameters that control polling behavior?</description>
											<enum-choice display-name="show">show</enum-choice>
											<enum-choice display-name="hide">hide</enum-choice>
											<value>show</value>
										</definition>
										<subordinates active-value="show">
											<definition display-name="Polling interval (in seconds):" name="polling-interval" type="string">
												<!--
                            NOTE: can't be type="int"; this type doesn't permit no value which is permissible
                            when time-of-day is used.
                        -->
												<description>What's the minimum number of seconds of inactivity that should elapse between polling cycles?  In practice, more than the number of specified seconds may elapse (i.e., this is a  lower bound only).  The default is 10 seconds.</description>
												<value>10</value>
											</definition>
											<definition display-name="Polling time of day:" name="time-of-day" type="string">
												<description>When should the Publisher check for new database events each day?  Time values may be entered in multiple formats.  The preferred format is hh:mm:ss, where h = hour, m = minute, s = second.</description>
												<value/>
											</definition>
											<definition display-name="Post polling statements:" name="post-poll-stmt" type="string">
												<description>What statements, if any, should be executed after an active polling cycle?  This parameter is useful, for instance, for calling a stored procedure/function that moves processed rows from the event log table into a history table and rebuilds indexes on the event log table.  Multiple values should be semicolon-delimited.</description>
												<value>CALL idmUser.proc_directlog(); DELETE FROM indirect.indirect_process</value>
											</definition>
											<definition display-name="Batch size:" name="batch-size" type="enum">
												<description>What is the desired number of database events that the Publisher group together in a single publication document?  The number of events per document may be less but will not be greater.  The upper bound of 128 was chosen to minimize the likelihood of overflowing the Java heap and to mitigate delaying termination of the Publisher thread on driver shutdown.</description>
												<enum-choice display-name="1 (default)">_</enum-choice>
												<enum-choice display-name="2">2</enum-choice>
												<enum-choice display-name="4">4</enum-choice>
												<enum-choice display-name="8">8</enum-choice>
												<enum-choice display-name="16">16</enum-choice>
												<enum-choice display-name="32">32</enum-choice>
												<enum-choice display-name="64">64</enum-choice>
												<enum-choice display-name="128">128</enum-choice>
												<value>_</value>
											</definition>
										</subordinates>
									</group>
								</subordinates>
							</group>
							<definition display-name="Heartbeat interval (in minutes):" name="pub-heartbeat-interval" type="integer">
								<description>How many minutes of Publisher inactivity should elapse before the Publisher sends a heartbeat document?  In practice, more than the number of minutes specified may elapse.  That is, this parameter defines a lower bound.</description>
								<value>0</value>
							</definition>
						</definitions>
					</configuration-values>
				</publisher-options>
			</driver-config>
		</shim-config-info-xml>
		<driver-password-query/>
		<shim-auth-password-query/>
		<policy-linkage>
			<linkage-item dn="Schema Mapping Rule.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="0" policy-set-name="Schema mapping"/>
			<linkage-item dn="Password(Pub)-Sub Email Notifications.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="1" policy-set-name="Input transform"/>
			<linkage-item dn="Veto DDL Sync.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="2" policy-set-name="Output transform"/>
			<linkage-item dn="Output Transformation.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="1" policy-set="2" policy-set-name="Output transform"/>
			<linkage-item dn="Password(Sub)-Pub Email Notifications.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="2" policy-set="2" policy-set-name="Output transform"/>
			<linkage-item dn="Triggerless polling.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="4" policy-set-name="Subscriber event transform"/>
			<linkage-item dn="TestSub.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="1" policy-set="4" policy-set-name="Subscriber event transform"/>
			<linkage-item dn="Sub Event Transform.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="2" policy-set="4" policy-set-name="Subscriber event transform"/>
			<linkage-item dn="Pub Event Transform.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="5" policy-set-name="Publisher event transform"/>
			<linkage-item dn="Matching Rule.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="6" policy-set-name="Subscriber matching"/>
			<linkage-item dn="Matching Rule.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="7" policy-set-name="Publisher matching"/>
			<linkage-item dn="Sub Create Policy.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="8" policy-set-name="Subscriber creation"/>
			<linkage-item dn="Create Rule.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="9" policy-set-name="Publisher creation"/>
			<linkage-item dn="Priv DDL.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="Group DDL.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="1" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="Password(Sub)-Transform Distribution Password.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="2" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="Password(Sub)-Default Password Policy.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="3" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="Password(Sub)-Check Password GCV.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="4" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="Password(Sub)-Add Password Payload.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="5" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="User DDL.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="6" policy-set="10" policy-set-name="Subscriber command transform"/>
			<linkage-item dn="Priv Events.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="11" policy-set-name="Publisher command transform"/>
			<linkage-item dn="Password(Pub)-Default Password Policy.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="1" policy-set="11" policy-set-name="Publisher command transform"/>
			<linkage-item dn="Password(Pub)-Check Password GCV.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="2" policy-set="11" policy-set-name="Publisher command transform"/>
			<linkage-item dn="Password(Pub)-Publish Distribution Password.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="3" policy-set="11" policy-set-name="Publisher command transform"/>
			<linkage-item dn="Password(Pub)-Publish NDS Password.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="4" policy-set="11" policy-set-name="Publisher command transform"/>
			<linkage-item dn="Password(Pub)-Add Password Payload.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="5" policy-set="11" policy-set-name="Publisher command transform"/>
			<linkage-item dn="Placement Rule.Publisher.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca" order="0" policy-set="13" policy-set-name="Publisher placement"/>
		</policy-linkage>
	</attributes>
	<children>
		<publisher name="Publisher">
			<attributes/>
			<children>
				<rule name="Create Rule">
					<policy>
						<rule>
							<description>User:  Require CN</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-veto-if-op-attr-not-available name="CN"/>
							</actions>
						</rule>
						<rule>
							<description>Group:  Require CN</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">Group</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-veto-if-op-attr-not-available name="CN"/>
							</actions>
						</rule>
						<rule>
							<description>Priv:  Require OrclGrantee, OrclGrantedRole</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">OrclPriv</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-veto-if-op-attr-not-available name="OrclGrantee"/>
								<do-veto-if-op-attr-not-available name="OrclGrantedRole"/>
							</actions>
						</rule>
						<rule>
							<description>User:  Add attributes</description>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
									<if-operation op="equal">add</if-operation>
								</and>
							</conditions>
							<actions>
								<do-add-dest-attr-value name="Surname">
									<arg-value type="string">
										<token-global-variable name="ConnectedSystemName"/>
									</arg-value>
								</do-add-dest-attr-value>
								<do-add-dest-attr-value name="Group Membership">
									<arg-value type="string">
										<token-global-variable name="ControlGroupOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
										<token-text xml:space="preserve">grp</token-text>
									</arg-value>
								</do-add-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>Group:  Add attributes</description>
							<conditions>
								<and>
									<if-class-name op="equal">Group</if-class-name>
									<if-operation op="equal">add</if-operation>
								</and>
							</conditions>
							<actions>
								<do-add-dest-attr-value name="Object Class">
									<arg-value type="string">
										<token-text xml:space="preserve">OrclRole</token-text>
									</arg-value>
								</do-add-dest-attr-value>
								<do-add-dest-attr-value name="OrclSID">
									<arg-value type="string">
										<token-global-variable name="ConnectedSystemName"/>
									</arg-value>
								</do-add-dest-attr-value>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Matching Rule">
					<policy>
						<rule>
							<description>User:  Match on CN</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-dn>
										<token-global-variable name="UsersOU"/>
									</arg-dn>
									<arg-match-attr name="CN"/>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule>
							<description>Group:  Match on CN</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">Group</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-dn>
										<token-global-variable name="OracleOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
									</arg-dn>
									<arg-match-attr name="CN"/>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule>
							<description>Priv:  Match on OrclGrantee, OrclGrantedRole</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">OrclPriv</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-dn>
										<token-global-variable name="OracleOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
									</arg-dn>
									<arg-match-attr name="OrclGrantee"/>
									<arg-match-attr name="OrclGrantedRole"/>
								</do-find-matching-object>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Pub)-Add Password Payload">
					<policy>
						<description>Publish password payloads</description>
						<rule>
							<description>Add operation-data element to password operations</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-password op="available"/>
									<if-xpath op="not-true">operation-data</if-xpath>
								</and>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-xpath op="true">add-attr[@attr-name='nspmDistributionPassword']</if-xpath>
									<if-xpath op="not-true">operation-data</if-xpath>
								</and>
								<and>
									<if-operation op="equal">modify-password</if-operation>
									<if-xpath op="not-true">operation-data</if-xpath>
								</and>
								<and>
									<if-operation op="equal">modify</if-operation>
									<if-xpath op="true">modify-attr[@attr-name='nspmDistributionPassword']</if-xpath>
									<if-xpath op="not-true">operation-data</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Add a operation data payload element to pick up result of a password operation -->
								<do-append-xml-element expression="." name="operation-data"/>
							</actions>
						</rule>
						<rule>
							<description>Add payload data to password operations</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-password op="available"/>
								</and>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-xpath op="true">add-attr[@attr-name='nspmDistributionPassword']</if-xpath>
								</and>
								<and>
									<if-operation op="equal">modify-password</if-operation>
								</and>
								<and>
									<if-operation op="equal">modify</if-operation>
									<if-xpath op="true">modify-attr[@attr-name='nspmDistributionPassword']</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Add a operation data payload element to pick up result of a password operation -->
								<do-append-xml-element expression="operation-data" name="password-publish-status"/>
								<do-append-xml-element expression="operation-data/password-publish-status" name="association"/>
								<do-append-xml-text expression="operation-data/password-publish-status/association">
									<arg-string>
										<token-association/>
									</arg-string>
								</do-append-xml-text>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Pub)-Check Password GCV">
					<policy>
						<description>Publish Passwords</description>
						<rule>
							<description>Block publishing passwords to IDM data store when adding a object</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="enable-password-publish" op="equal">false</if-global-variable>
									<if-operation op="equal">add</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Remove all password elements from add -->
								<do-strip-xpath expression="password"/>
							</actions>
						</rule>
						<rule>
							<description>Block sending modify-password changes to the IDM data store</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="enable-password-publish" op="equal">false</if-global-variable>
									<if-operation op="equal">modify-password</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Block all modify-passwords -->
								<do-veto/>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Pub)-Default Password Policy">
					<policy>
						<rule>
							<description>On User add, provide default password of Dirxml1 if none exists</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">User</if-class-name>
									<if-password op="not-available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-password>
									<arg-string>
										<token-text xml:space="preserve" xmlns:xml="http://www.w3.org/XML/1998/namespace">Dirxml1</token-text>
									</arg-string>
								</do-set-dest-password>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Pub)-Publish Distribution Password">
					<policy>
						<description>Publish passwords to NMAS distribution password</description>
						<rule>
							<description>Add nspmDistributionAttribute attribute to add operation</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="publish-password-to-dp" op="equal">true</if-global-variable>
									<if-operation op="equal">add</if-operation>
									<if-password op="available"/>
								</and>
							</conditions>
							<actions>
								<!-- Add add-attr element for nspmDistributionPassword attribute -->
								<do-add-dest-attr-value name="nspmDistributionPassword">
									<arg-value>
										<token-password/>
									</arg-value>
								</do-add-dest-attr-value>
								<!-- Add a validate-password attribute to previous add-attr element -->
								<do-set-xml-attr expression="add-attr[@attr-name = 'nspmDistributionPassword'][last()]" name="enforce-password-policy">
									<arg-string>
										<token-global-variable name="enforce-password-policy"/>
									</arg-string>
								</do-set-xml-attr>
							</actions>
						</rule>
						<rule>
							<description>Change modify-password operations to a modify</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="publish-password-to-dp" op="equal">true</if-global-variable>
									<if-operation op="equal">modify-password</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Add modify-attr element for nspmDistributionPassword attribute -->
								<do-add-dest-attr-value name="nspmDistributionPassword">
									<arg-value>
										<token-password/>
									</arg-value>
								</do-add-dest-attr-value>
								<!-- Add a event-id attribute to previous modify element -->
								<do-set-xml-attr expression="../modify" name="event-id">
									<arg-string>
										<token-text>pwd-publish</token-text>
									</arg-string>
								</do-set-xml-attr>
								<!-- Add a validate-password attribute to previous add-attr element -->
								<do-set-xml-attr expression="../modify/modify-attr[@attr-name='nspmDistributionPassword']" name="enforce-password-policy">
									<arg-string>
										<token-global-variable name="enforce-password-policy"/>
									</arg-string>
								</do-set-xml-attr>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Pub)-Publish NDS Password">
					<policy>
						<description>Publish passwords to NDS password</description>
						<rule>
							<description>Block publishing passwords to NDS password</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="publish-password-to-nds" op="equal">false</if-global-variable>
									<if-operation op="equal">add</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Remove all password elements from add -->
								<do-strip-xpath expression="password"/>
							</actions>
						</rule>
						<rule>
							<description>Block sending modify-password changes to the NDS password</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="publish-password-to-nds" op="equal">false</if-global-variable>
									<if-operation op="equal">modify-password</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Block all modify-passwords -->
								<do-veto/>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Placement Rule">
					<policy>
						<rule>
							<description>User</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-global-variable name="UsersOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-src-name/>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
						<rule>
							<description>Group</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">Group</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-global-variable name="OracleOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
										<token-text xml:space="preserve">\</token-text>
										<token-src-name/>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
						<rule>
							<description>Priv</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">OrclPriv</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-global-variable name="OracleOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
										<token-text xml:space="preserve">\</token-text>
										<token-op-attr name="OrclGrantee"/>
										<token-text xml:space="preserve">-Priv-</token-text>
										<token-op-attr name="OrclGrantedRole"/>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Priv Events">
					<policy xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor">
						<rule>
							<description>Set Local Variables</description>
							<conditions>
								<and>
									<if-class-name op="equal">OrclPriv</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="priv">
									<arg-string>
										<token-dest-name/>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="grantee">
									<arg-string>
										<token-xpath expression="substring-before($priv,'-Priv-')"/>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="grantedrole">
									<arg-string>
										<token-xpath expression="substring-after($priv,'-Priv-')"/>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="UserOU">
									<arg-string>
										<token-global-variable name="UsersOU"/>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="RoleOU">
									<arg-string>
										<token-global-variable name="OracleOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="granteeDN">
									<arg-string>
										<token-xpath expression='(query:search($destQueryProcessor,     "subtree", "", $UserOU, "", "CN", $grantee, ""))/@src-dn'/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule>
							<description>Set GranteeDN if Group</description>
							<conditions>
								<and>
									<if-xpath op="not-true">contains($granteeDN,$grantee)</if-xpath>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="granteeDN">
									<arg-string>
										<token-xpath expression='(query:search($destQueryProcessor,     "subtree", "", $RoleOU, "", "CN", $grantee, ""))/@src-dn'/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule>
							<description>ADD Priv for User or Group</description>
							<conditions>
								<and>
									<if-class-name op="equal">OrclPriv</if-class-name>
									<if-operation op="equal">add</if-operation>
								</and>
							</conditions>
							<actions>
								<do-add-dest-attr-value name="Group Membership">
									<arg-dn>
										<token-local-variable name="granteeDN"/>
									</arg-dn>
									<arg-value type="string">
										<token-global-variable name="OracleOU-noTree"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
										<token-text xml:space="preserve">\</token-text>
										<token-attr name="OrclGrantedRole"/>
									</arg-value>
								</do-add-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>DEL Priv for User or Group</description>
							<conditions>
								<and>
									<if-class-name op="equal">OrclPriv</if-class-name>
									<if-operation op="equal">delete</if-operation>
								</and>
							</conditions>
							<actions>
								<do-remove-dest-attr-value name="Group Membership">
									<arg-dn>
										<token-local-variable name="granteeDN"/>
									</arg-dn>
									<arg-value type="string">
										<token-global-variable name="OracleOU-noTree"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
										<token-text xml:space="preserve">\</token-text>
										<token-local-variable name="grantedrole"/>
									</arg-value>
								</do-remove-dest-attr-value>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Pub Event Transform">
					<policy>
						<rule>
							<description>Transform Delete User into Remove from Group</description>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
									<if-operation op="equal">delete</if-operation>
								</and>
							</conditions>
							<actions>
								<do-remove-dest-attr-value class-name="User" direct="true" name="Group Membership">
									<arg-value type="string">
										<token-global-variable name="ControlGroupOU"/>
										<token-text xml:space="preserve">\</token-text>
										<token-global-variable name="ConnectedSystemName"/>
										<token-text xml:space="preserve">grp</token-text>
									</arg-value>
								</do-remove-dest-attr-value>
							</actions>
						</rule>
					</policy>
				</rule>
			</children>
		</publisher>
		<subscriber name="Subscriber">
			<attributes/>
			<children>
				<rule name="Matching Rule">
					<policy>
						<rule>
							<description>User:  Match on CN</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-match-attr name="CN"/>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule>
							<description>Group  Match on CN</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">Group</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-match-attr name="CN"/>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule>
							<description>Priv  Match on OrclGrantee, OrclGrantedRole</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">OrclPriv</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-match-attr name="OrclGrantee"/>
									<arg-match-attr name="OrclGrantedRole"/>
								</do-find-matching-object>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Sub)-Add Password Payload">
					<policy>
						<description>Payloads for subscribe to password changes</description>
						<rule>
							<description>Add operation-data element to password operations</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-password op="available"/>
									<if-xpath op="not-true">operation-data</if-xpath>
								</and>
								<and>
									<if-operation op="equal">modify-password</if-operation>
									<if-xpath op="not-true">operation-data</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Add a operation data payload element to pick up result of a password operation -->
								<do-append-xml-element expression="." name="operation-data"/>
							</actions>
						</rule>
						<rule>
							<description>Add payload data to a reset password from a failed password publish operation</description>
							<conditions>
								<and>
									<if-operation op="equal">modify-password</if-operation>
									<if-xpath op="true">self::modify-password[@event-id = 'pwd-publish-failed']</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Add a operation data payload element to pick up result of a password operation -->
								<do-append-xml-element expression="operation-data" name="password-reset-status"/>
								<do-append-xml-element expression="operation-data/password-reset-status" name="association"/>
								<do-append-xml-text expression="operation-data/password-reset-status/association">
									<arg-string>
										<token-association/>
									</arg-string>
								</do-append-xml-text>
							</actions>
						</rule>
						<rule>
							<description>Add payload data to password operations</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-password op="available"/>
								</and>
								<and>
									<if-operation op="equal">modify-password</if-operation>
									<if-xpath op="true">self::modify-password[@event-id != 'pwd-publish-failed']</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Add a operation data payload element to pick up result of a password operation -->
								<do-append-xml-element expression="operation-data" name="password-subscribe-status"/>
								<do-append-xml-element expression="operation-data/password-subscribe-status" name="association"/>
								<do-append-xml-text expression="operation-data/password-subscribe-status/association">
									<arg-string>
										<token-association/>
									</arg-string>
								</do-append-xml-text>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Sub)-Check Password GCV">
					<policy>
						<description>Subscribe to password changes</description>
						<rule>
							<description>Block subscribing to passwords when objects are added</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="enable-password-subscribe" op="equal">false</if-global-variable>
									<if-operation op="equal">add</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Remove all password elements from add -->
								<do-strip-xpath expression="password"/>
							</actions>
						</rule>
						<rule>
							<description>Block subscribing to password modifications</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="enable-password-subscribe" op="equal">false</if-global-variable>
									<if-operation op="equal">modify-password</if-operation>
								</and>
							</conditions>
							<actions>
								<!-- Block all modify-passwords -->
								<do-veto/>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Sub)-Default Password Policy">
					<policy>
						<rule>
							<description>On User add, provide default password of Dirxml1 if none exists</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-class-name op="equal">User</if-class-name>
									<if-password op="not-available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-password>
									<arg-string>
										<token-text xml:space="preserve" xmlns:xml="http://www.w3.org/XML/1998/namespace">Dirxml1</token-text>
									</arg-string>
								</do-set-dest-password>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Sub)-Transform Distribution Password">
					<policy>
						<description>Transform NMAS attribute to password elements</description>
						<rule>
							<description>Convert adds of the nspmDistributionPassword attribute to password elements</description>
							<conditions>
								<and>
									<if-operation op="equal">add</if-operation>
									<if-op-attr name="nspmDistributionPassword" op="available"/>
								</and>
							</conditions>
							<actions>
								<!-- Change all add-attr elements for the nspmDistributionPassword attribute to password elements-->
								<do-set-dest-password>
									<arg-string>
										<token-xpath expression="add-attr[@attr-name='nspmDistributionPassword']//value"/>
									</arg-string>
								</do-set-dest-password>
								<!-- Remove all add-attr elements for the nspmDistributionPassword attribute -->
								<do-strip-op-attr name="nspmDistributionPassword"/>
							</actions>
						</rule>
						<rule>
							<description>Block modifies for failed password publish operations if reset password is false</description>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="reset-external-password-on-failure" op="equal">false</if-global-variable>
									<if-operation op="equal">modify</if-operation>
									<if-xpath op="true">modify-attr[@attr-name='nspmDistributionPassword' and @failed-sync='true']</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Block a password reset -->
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>Convert modifies of a nspmDistributionPassword attribute to a modify password operation</description>
							<conditions>
								<and>
									<if-operation op="equal">modify</if-operation>
									<if-op-attr name="nspmDistributionPassword" op="available"/>
								</and>
							</conditions>
							<actions>
								<!-- Change all modify-attr elements for the nspmDistributionPassword attribute to modify-password elements-->
								<do-set-dest-password>
									<arg-string>
										<token-xpath expression="modify-attr[@attr-name='nspmDistributionPassword']//add-value//value"/>
									</arg-string>
								</do-set-dest-password>
								<!-- Remove all add-attr elements for the nspmDistributionPassword attribute -->
								<do-strip-op-attr name="nspmDistributionPassword"/>
								<!-- Add an event-id attribute to the modify-password command we just added, required for operation data -->
								<do-set-xml-attr expression="../modify-password" name="event-id">
									<arg-string>
										<token-text>pwd-subscribe</token-text>
									</arg-string>
								</do-set-xml-attr>
							</actions>
						</rule>
						<rule>
							<description>Block empty modify operations</description>
							<conditions>
								<and>
									<if-operation op="equal">modify</if-operation>
									<if-xpath op="not-true">modify-attr</if-xpath>
								</and>
							</conditions>
							<actions>
								<!-- Veto empty modify -->
								<do-veto/>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Sub Create Policy">
					<policy>
						<rule>
							<description>User:  Veto if not for driver's SID</description>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
									<if-attr name="Group Membership" op="not-equal">\META\ca\novl\Oracle\Ora10gR2grp</if-attr>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>Group:  Veto if not for driver's SID</description>
							<conditions>
								<and>
									<if-class-name op="equal">Group</if-class-name>
									<if-attr name="OrclSID" op="not-equal">Ora10gR2</if-attr>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>User:  Add association</description>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-add-association>
									<arg-association>
										<token-text xml:space="preserve">PK_USERNAME=</token-text>
										<token-attr name="CN"/>
										<token-text xml:space="preserve">,table=VIEW_ORCLUSERS,schema=idmUser</token-text>
									</arg-association>
								</do-add-association>
							</actions>
						</rule>
						<rule>
							<description>Group  Add association</description>
							<conditions>
								<and>
									<if-class-name op="equal">Group</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-add-association>
									<arg-association>
										<token-text xml:space="preserve">PK_ROLE=</token-text>
										<token-attr name="CN"/>
										<token-text xml:space="preserve">,table=VIEW_ORCLROLES,schema=idmUser</token-text>
									</arg-association>
								</do-add-association>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Sub Event Transform">
					<policy>
						<rule>
							<description>test</description>
							<conditions>
								<and>
									<if-xpath op="true">@source="Oracle"</if-xpath>
								</and>
							</conditions>
							<actions>
								<do-trace-message level="1">
									<arg-string>
										<token-text xml:space="preserve">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</token-text>
									</arg-string>
								</do-trace-message>
							</actions>
						</rule>
					</policy>
				</rule>
				<stylesheet name="Group DDL">
					<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
						<xsl:param name="destQueryProcessor"/>
						<xsl:param name="srcQueryProcessor"/>
						<!-- identity template -->
						<xsl:template match="node()|@*">
							<xsl:copy>
								<xsl:apply-templates select="node()|@*"/>
							</xsl:copy>
						</xsl:template>
						<!-- Adds a database role -->
						<xsl:template match="input/add[@class-name='Group']" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:variable name="role" select="add-attr[@attr-name='CN']/value[1]"/>
							<xsl:variable name="sid" select="add-attr[@attr-name='OrclSID']/value[1]"/>
							<xsl:choose>
								<xsl:when test="$role and string($sid) = '~ConnectedSystemName~'">
									<xsl:call-template name="add-add-sql">
										<xsl:with-param name="role" select="$role"/>
										<xsl:with-param name="sid" select="$sid"/>
									</xsl:call-template>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>
										<status level="error" type="password-set-operation">
											<xsl:text>Unable to create role.  </xsl:text>
											<xsl:text>Missing 'OrclRole' value or 'OrclSID' not equal to '~ConnectedSystemName~'.</xsl:text>
										</status>
									</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:template>
						<!-- Adds SQL to add a database role -->
						<xsl:template name="add-add-sql" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="role"/>
							<xsl:param name="sid"/>
							<xsl:copy>
								<xsl:variable name="attrs" select="add-attr[@attr-name='CN' or @attr-name='OrclSID']"/>
								<xsl:variable name="blah" select="Mapping:FirstPerReplica(., $attrs, $srcQueryProcessor)"/>
								<xsl:attribute name="jdbc:transaction-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-type">password-set-operation</xsl:attribute>
								<xsl:apply-templates select="node() | @*"/>
							</xsl:copy>
							<!-- DDL statements cause transaction commit in Oracle.  As such, they should not be part of a manual transaction -->
							<jdbc:statement jdbc:op-id="0">
								<jdbc:sql>
									<xsl:text>CREATE ROLE </xsl:text>
									<xsl:value-of select="$role"/>
									<!-- 

					because an association value is not yet available, you can 

					reference association fields using XSLT attribute value template

					notation and the driver will replace the variable with it's corresponding 

					value once it becomes available

				-->
								</jdbc:sql>
							</jdbc:statement>
						</xsl:template>
						<!-- Drops a database role -->
						<xsl:template match="input/delete[@class-name='Group']" xmlns:jdbc="urn:dirxml:jdbc" xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor">
							<xsl:variable name="role" select="remove-attr[@attr-name='CN']/value[1]"/>
							<xsl:variable name="sid" select="remove-attr[@attr-name='OrclSID']/value[1]"/>
							<xsl:variable name="query">
								<!-- Adding an association to the first command element of each document (other than an add) also 

								makes variable replacement possible -->
								<!-- The Oracle JDBC driver errantly returns the same result set multiple times unless you set the 

								statement type to "query" -->
								<jdbc:statement jdbc:type="query">
									<xsl:copy-of select="association"/>
									<jdbc:sql>SELECT pk_ROLE FROM view_ORCLROLES WHERE pk_ROLE = {$pk_ROLE}</jdbc:sql>
								</jdbc:statement>
							</xsl:variable>
							<xsl:variable name="result" select="query:query($destQueryProcessor,$query)"/>
							<xsl:variable name="rolename" select="$result//jdbc:result-set[1]/jdbc:row[1]/jdbc:column[@jdbc:name='pk_ROLE']/jdbc:value"/>
							<xsl:choose>
								<xsl:when test="$rolename and string($sid) = '~ConnectedSystemName~'">
									<xsl:call-template name="add-drop-sql">
										<xsl:with-param name="role" select="$role"/>
										<xsl:with-param name="sid" select="$sid"/>
									</xsl:call-template>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>
										<status level="error" type="password-set-operation">
											<xsl:text>Unable to drop role.  </xsl:text>
											<xsl:text>Unable to retrieve role info or SID not equal to "~ConnectedSystemName~".</xsl:text>
										</status>
									</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:template>
						<!-- Adds SQL to drop role -->
						<xsl:template name="add-drop-sql" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="role"/>
							<xsl:param name="sid"/>
							<xsl:copy>
								<xsl:attribute name="jdbc:op-id">0</xsl:attribute>
								<xsl:apply-templates select="node() | @*"/>
							</xsl:copy>
							<!-- DDL statements cause transaction commit in Oracle.  As such, they should not be part of a manual transaction -->
							<jdbc:statement jdbc:op-id="0">
								<jdbc:sql>
									<xsl:text>DROP ROLE </xsl:text>
									<xsl:value-of select="$role"/>
									<xsl:text> CASCADE</xsl:text>
								</jdbc:sql>
							</jdbc:statement>
						</xsl:template>
					</xsl:transform>
				</stylesheet>
				<stylesheet name="Priv DDL">
					<xsl:transform version="1.0" xmlns:cmd="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsCommandProcessor" xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
						<xsl:param name="destQueryProcessor"/>
						<xsl:param name="srcQueryProcessor"/>
						<xsl:param name="srcCommandProcessor"/>
						<xsl:param name="destCommandProcessor"/>
						<!-- identity template -->
						<xsl:template match="node()|@*">
							<xsl:copy>
								<xsl:apply-templates select="node()|@*"/>
							</xsl:copy>
						</xsl:template>
						<!-- Adds or Drops a database role membership for User	-->
						<xsl:template match="modify[@class-name='User']" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:variable name="association" select="association"/>
							<xsl:variable name="addgroupmembership" select="./modify-attr[@attr-name='Group Membership']/add-value/value"/>
							<xsl:message>We are in the Sub-CT stylesheet Role Membership for User</xsl:message>
							<xsl:variable name="delgroupmembership" select="./modify-attr[@attr-name='Group Membership']/remove-value/value"/>
							<xsl:copy>
								<xsl:apply-templates select="node()|@*"/>
							</xsl:copy>
							<xsl:variable name="rolepattern" select="concat('~ConnectedSystemName~','\')"/>
							<xsl:for-each select="$addgroupmembership">
								<xsl:choose>
									<xsl:when test="contains(.,$rolepattern)">
										<xsl:message>Group corresponds to a Oracle role</xsl:message>
										<xsl:call-template name="add-usermembership-sql">
											<xsl:with-param name="oraclemember" select="$association"/>
											<xsl:with-param name="oraclemembership" select="."/>
										</xsl:call-template>
									</xsl:when>
									<xsl:otherwise>
										<xsl:message>Group does not correspond to a Oracle role</xsl:message>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:for-each>
							<xsl:for-each select="$delgroupmembership">
								<xsl:choose>
									<xsl:when test="contains(.,$rolepattern)">
										<xsl:call-template name="del-usermembership-sql">
											<xsl:with-param name="oraclemember" select="$association"/>
											<xsl:with-param name="oraclemembership" select="."/>
										</xsl:call-template>
									</xsl:when>
									<xsl:otherwise>
										<xsl:message>Group does not correspond to a Oracle role</xsl:message>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:for-each>
						</xsl:template>
						<!-- Adds or Drops a database role membership for Group	-->
						<xsl:template match="modify[@class-name='Group']" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:variable name="association" select="association"/>
							<xsl:variable name="addgroupmembership" select="./modify-attr[@attr-name='Group Membership']/add-value/value"/>
							<xsl:message>We are in the Sub-CT stylesheet Role Membership for Group</xsl:message>
							<xsl:variable name="delgroupmembership" select="./modify-attr[@attr-name='Group Membership']/remove-value/value"/>
							<xsl:copy>
								<xsl:apply-templates select="node()|@*"/>
							</xsl:copy>
							<xsl:variable name="rolepattern" select="concat('~ConnectedSystemName~','\')"/>
							<xsl:for-each select="$addgroupmembership">
								<xsl:choose>
									<xsl:when test="contains(.,$rolepattern)">
										<xsl:message>Group corresponds to a Oracle role</xsl:message>
										<xsl:call-template name="add-grmembership-sql">
											<xsl:with-param name="oraclemember" select="$association"/>
											<xsl:with-param name="oraclemembership" select="."/>
										</xsl:call-template>
									</xsl:when>
									<xsl:otherwise>
										<xsl:message>Group does not correspond to a Oracle role</xsl:message>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:for-each>
							<xsl:for-each select="$delgroupmembership">
								<xsl:choose>
									<xsl:when test="contains(.,$rolepattern)">
										<xsl:message>Group corresponds to a Oracle role</xsl:message>
										<xsl:call-template name="del-grmembership-sql">
											<xsl:with-param name="oraclemember" select="$association"/>
											<xsl:with-param name="oraclemembership" select="."/>
										</xsl:call-template>
									</xsl:when>
									<xsl:otherwise>
										<xsl:message>Group does not correspond to a Oracle role</xsl:message>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:for-each>
						</xsl:template>
						<!-- Adds SQL to add a database role membership for User -->
						<xsl:template name="add-usermembership-sql" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="oraclemember"/>
							<xsl:param name="oraclemembership"/>
							<xsl:message>Add roles to Database user</xsl:message>
							<xsl:copy>
								<xsl:attribute name="jdbc:transaction-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-type">password-set-operation</xsl:attribute>
								<xsl:apply-templates select="node() | @*"/>
							</xsl:copy>
							<!--	_________________	Query eDirectory for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query class-name="Group" dest-dn="{$oraclemembership}" scope="entry">
									<read-attr attr-name="CN"/>
									<read-attr attr-name="OrclSID"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="oraclerole" select="$result/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:variable name="oraclesid" select="$result/nds/output/instance[1]/attr[@attr-name='OrclSID']/value[1]"/>
							<!--	_________________	Query Oracle for existing attributes __________________ -->
							<xsl:variable name="dest-query">
								<query class-name="User" dest-dn="{$oraclemember}" scope="entry">
									<read-attr attr-name="CN"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result2" select="query:query($destQueryProcessor, $dest-query)"/>
							<xsl:variable name="oracleuser" select="$result2/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:if test="string($oraclesid) = '~ConnectedSystemName~'">
								<!-- These stored procedures must not be called within user-defined (manual) transactions -->
								<jdbc:statement jdbc:op-id="0">
									<jdbc:sql>
										<xsl:text>GRANT </xsl:text>
										<xsl:value-of select="$oraclerole"/>
										<xsl:text> TO </xsl:text>
										<xsl:value-of select="$oracleuser"/>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:if>
						</xsl:template>
						<!-- Adds SQL to remove a Oracle role membership for User -->
						<xsl:template name="del-usermembership-sql" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="oraclemember"/>
							<xsl:param name="oraclemembership"/>
							<xsl:message>remove a Oracle role membership for User</xsl:message>
							<xsl:copy>
								<xsl:attribute name="jdbc:transaction-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-type">password-set-operation</xsl:attribute>
								<xsl:apply-templates select="node() | @*"/>
							</xsl:copy>
							<!--	_________________	Query eDirectory for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query class-name="Group" dest-dn="{$oraclemembership}" scope="entry">
									<read-attr attr-name="CN"/>
									<read-attr attr-name="OrclSID"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="oraclerole" select="$result/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:variable name="oraclesid" select="$result/nds/output/instance[1]/attr[@attr-name='OrclSID']/value[1]"/>
							<!--	_________________	Query Oracle for existing attributes __________________ -->
							<xsl:variable name="dest-query">
								<query class-name="User" dest-dn="{$oraclemember}" scope="entry">
									<read-attr attr-name="CN"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result2" select="query:query($destQueryProcessor, $dest-query)"/>
							<xsl:variable name="oracleuser" select="$result2/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:if test="string($oraclesid) = '~ConnectedSystemName~'">
								<!-- These stored procedures must not be called within user-defined (manual) transactions -->
								<jdbc:statement jdbc:op-id="0">
									<jdbc:sql>
										<xsl:text>REVOKE </xsl:text>
										<xsl:value-of select="$oraclerole"/>
										<xsl:text> FROM </xsl:text>
										<xsl:value-of select="$oracleuser"/>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:if>
							<xsl:message>Verify if removed Group is MyDBGrp.  Removed Group is: <xsl:value-of select="$oraclemembership"/>
							</xsl:message>
							<xsl:if test="string($oraclemembership) = concat('~OracleOU~','\','~ConnectedSystemName~','grp')">
								<xsl:message>User must be removed from Oracle</xsl:message>
								<jdbc:statement jdbc:op-id="0">
									<jdbc:sql>
										<xsl:text>DROP USER </xsl:text>
										<xsl:value-of select="$oracleuser"/>
										<xsl:text> CASCADE</xsl:text>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:if>
						</xsl:template>
						<!-- Adds SQL to add a database role membership for Group -->
						<xsl:template name="add-grmembership-sql" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="oraclemember"/>
							<xsl:param name="oraclemembership"/>
							<xsl:copy>
								<xsl:attribute name="jdbc:transaction-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-type">password-set-operation</xsl:attribute>
								<xsl:apply-templates select="node() | @*"/>
							</xsl:copy>
							<!--	_________________	Query eDirectory for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query class-name="Group" dest-dn="{$oraclemembership}" scope="entry">
									<read-attr attr-name="CN"/>
									<read-attr attr-name="OrclSID"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="oraclerolemembership" select="$result/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:variable name="oraclerolemembershipsid" select="$result/nds/output/instance[1]/attr[@attr-name='OrclSID']/value[1]"/>
							<!--	_________________	Query Oracle for existing attributes __________________ -->
							<xsl:variable name="dest-query">
								<query class-name="Group" dest-dn="{$oraclemember}" scope="entry">
									<read-attr attr-name="CN"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result2" select="query:query($destQueryProcessor, $dest-query)"/>
							<xsl:variable name="oraclerolemember" select="$result2/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:if test="string($oraclerolemembershipsid)= '~ConnectedSystemName~'">
								<!-- These stored procedures must not be called within user-defined (manual) transactions -->
								<jdbc:statement jdbc:op-id="0">
									<jdbc:sql>
										<xsl:text>GRANT </xsl:text>
										<xsl:value-of select="$oraclerolemembership"/>
										<xsl:text> TO </xsl:text>
										<xsl:value-of select="$oraclerolemember"/>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:if>
						</xsl:template>
						<!-- Adds SQL to remove a Oracle role membership for Group -->
						<xsl:template name="del-grmembership-sql" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="oraclemember"/>
							<xsl:param name="oraclemembership"/>
							<xsl:copy>
								<xsl:attribute name="jdbc:transaction-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-id">0</xsl:attribute>
								<xsl:attribute name="jdbc:op-type">password-set-operation</xsl:attribute>
								<xsl:apply-templates select="node() | @*"/>
							</xsl:copy>
							<!--	_________________	Query eDirectory for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query class-name="Group" dest-dn="{$oraclemembership}" scope="entry">
									<read-attr attr-name="CN"/>
									<read-attr attr-name="OrclSID"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="oraclerolemembership" select="$result/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:variable name="oraclerolemembershipsid" select="$result/nds/output/instance[1]/attr[@attr-name='OrclSID']/value[1]"/>
							<!--	_________________	Query Oracle for existing attributes __________________ -->
							<xsl:variable name="dest-query">
								<query class-name="Group" dest-dn="{$oraclemember}" scope="entry">
									<read-attr attr-name="CN"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting attributes into variables __________________ -->
							<xsl:variable name="result2" select="query:query($destQueryProcessor, $dest-query)"/>
							<xsl:variable name="oraclerolemember" select="$result2/nds/output/instance[1]/attr[@attr-name='CN']/value[1]"/>
							<xsl:if test="string($oraclerolemembershipsid)= '~ConnectedSystemName~'">
								<!-- These stored procedures must not be called within user-defined (manual) transactions -->
								<jdbc:statement jdbc:op-id="0">
									<jdbc:sql>
										<xsl:text>REVOKE </xsl:text>
										<xsl:value-of select="$oraclerolemembership"/>
										<xsl:text> FROM </xsl:text>
										<xsl:value-of select="$oraclerolemember"/>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:if>
						</xsl:template>
					</xsl:transform>
				</stylesheet>
				<stylesheet name="Replica Value" next-transform="User DDL.Subscriber.Oracle-Ora10gR2.Serveur IdM.Services.zsp.gouv.qc.ca">
					<xsl:stylesheet exclude-result-prefixes="query cmd dncv" version="1.0" xmlns:cmd="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsCommandProcessor" xmlns:dncv="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.DNConverter" xmlns:mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
						<!-- parameters passed in from the DirXML engine -->
						<xsl:param name="srcQueryProcessor"/>
						<xsl:param name="destQueryProcessor"/>
						<xsl:param name="srcCommandProcessor"/>
						<xsl:param name="destCommandProcessor"/>
						<xsl:param name="dnConverter"/>
						<xsl:param name="fromNds"/>
						<!-- identity transformation template -->
						<!-- in the absence of any other templates this will cause -->
						<!-- the stylesheet to copy the input through unchanged to the output -->
						<xsl:template match="node()|@*">
							<xsl:copy>
								<xsl:apply-templates select="@*|node()"/>
							</xsl:copy>
						</xsl:template>
						<!-- Always sync first replica value of Surname and Given Name. -->
						<xsl:template match="input/*[(name() = 'add' or name() = 'modify') and @class-name='User']">
							<xsl:copy>
								<xsl:apply-templates select="@*"/>
								<xsl:variable name="attrs" select="*[@attr-name='Surname' or @attr-name='Given Name']"/>
								<xsl:apply-templates select="*[not(@attr-name=$attrs/@attr-name)]"/>
								<xsl:choose>
									<xsl:when test="'~replica-value~' = 'first'">
										<xsl:copy-of select="mapping:FirstPerReplica(., $attrs, $srcQueryProcessor)"/>
									</xsl:when>
									<xsl:when test="'~replica-value~' = 'last'">
										<xsl:copy-of select="mapping:LastPerReplica(., $attrs, $srcQueryProcessor)"/>
									</xsl:when>
									<xsl:otherwise>
										<xsl:message>
											<status level="error">
												<xsl:text>Global variable 'replica-value' is undefined or is set to an illegal value '~replica-value~'.</xsl:text>
											</status>
										</xsl:message>
									</xsl:otherwise>
								</xsl:choose>
							</xsl:copy>
						</xsl:template>
					</xsl:stylesheet>
				</stylesheet>
				<stylesheet name="TestSub">
					<xsl:transform version="1.0" xmlns:cmd="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsCommandProcessor" xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
						<xsl:param name="destQueryProcessor"/>
						<xsl:param name="srcQueryProcessor"/>
						<xsl:param name="srcCommandProcessor"/>
						<xsl:param name="destCommandProcessor"/>
						<!-- identity template -->
						<xsl:template match="node()|@*">
							<xsl:if test="starts-with(@event-id,'trigger-job:Oracle')">
								<xsl:message>We are in the Sub-CT stylesheet Role Membership for @source=Oracle</xsl:message>
								<xsl:message>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</xsl:message>
							</xsl:if>
							<xsl:copy>
								<xsl:apply-templates select="node()|@*"/>
							</xsl:copy>
						</xsl:template>
					</xsl:transform>
				</stylesheet>
				<stylesheet name="Triggerless polling">
					<xsl:transform version="1.0" xmlns:cmd="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsCommandProcessor" xmlns:query="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.XdsQueryProcessor" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
						<xsl:param name="destQueryProcessor"/>
						<xsl:param name="srcQueryProcessor"/>
						<xsl:param name="srcCommandProcessor"/>
						<xsl:param name="destCommandProcessor"/>
						<!-- identity template -->
						<xsl:template match="node()|@*">
							<xsl:if test="starts-with(@event-id,'trigger-job:Oracle')">
								<xsl:message>We are in the Sub-ET for a Job event</xsl:message>
								<xsl:call-template name="clock-tick-acct"/>
								<xsl:call-template name="clock-tick-role"/>
								<xsl:call-template name="clock-tick-priv"/>
							</xsl:if>
							<xsl:copy>
								<xsl:apply-templates select="node()|@*"/>
							</xsl:copy>
						</xsl:template>
						<!-- Adds SQL for clock tick for Users -->
						<xsl:template name="clock-tick-acct" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:message>We are in the stylesheet Sub-Clock2 for a clock tick for Accounts</xsl:message>
							<!-- Query Oracle for Users -->
							<xsl:variable name="query2">
								<jdbc:statement jdbc:type="query">
									<jdbc:sql>
										<xsl:text>SELECT pk_USERNAME FROM view_ORCLUSERS</xsl:text>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:variable>
							<xsl:variable name="result2" select="query:query($destQueryProcessor,$query2)"/>
							<xsl:variable name="orcl_users" select="$result2//jdbc:result-set/jdbc:row/jdbc:column[@jdbc:name='PK_USERNAME']/jdbc:value"/>
							<xsl:message>Log the list of Oracle Users</xsl:message>
							<xsl:for-each select="$orcl_users">
								<xsl:message>
									<xsl:value-of select="."/>
								</xsl:message>
							</xsl:for-each>
							<!--	_________________	Query eDir for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query class-name="Group" dest-dn="concat('~ControlGroupOU~','\','~ConnectedSystemName~','grp')" scope="entry">
									<read-attr attr-name="Member"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting eDir attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="members" select="$result//value"/>
							<xsl:choose>
								<xsl:when test="$members">
									<xsl:for-each select="$members">
										<xsl:if test="$orcl_users != substring-after(.,concat('~UsersOU~','\'))">
											<xsl:message>Account has been removed from Oracle : <xsl:value-of select="substring-after(.,concat('~UsersOU~','\'))"/>
											</xsl:message>
											<xsl:call-template name="deactivate-acct">
												<xsl:with-param name="dn" select="."/>
											</xsl:call-template>
										</xsl:if>
									</xsl:for-each>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>There are no deleted Oracle users for this instance</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
							<xsl:choose>
								<xsl:when test="$orcl_users">
									<xsl:for-each select="$orcl_users">
										<xsl:if test="concat('~UsersOU~','\',.) != $members">
											<xsl:message>Account has been added to Oracle : <xsl:value-of select="."/>
											</xsl:message>
											<xsl:call-template name="activate-acct">
												<xsl:with-param name="orcl_user" select="."/>
											</xsl:call-template>
										</xsl:if>
									</xsl:for-each>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>There are no new Oracle users for this instance</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:template>
						<!-- Deactivate acct -->
						<xsl:template name="deactivate-acct" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="dn"/>
							<xsl:message>We are in the stylesheet Sub-Clock2 for deactivating an account</xsl:message>
							<xsl:message>Account has been removed from Oracle</xsl:message>
							<!-- ============================================================ -->
							<!-- Generate the XDS fragment that will remove the Group Membership for MyDBGrp -->
							<!-- ============================================================ -->
							<xsl:variable name="add-cmd-update">
								<modify class-name="User" dest-dn="{$dn}">
									<modify-attr attr-name="Group Membership">
										<remove-value>
											<value>
												<xsl:value-of select="concat('~ControlGroupOU~','\','~ConnectedSystemName~','grp')"/>
											</value>
										</remove-value>
									</modify-attr>
								</modify>
								<remove-association>
									<xsl:value-of select="concat('PK_USERNAME=',substring-after($dn,concat('~glob.vault.u.context~','\')),',table=view_ORCLUSERS,schema=idmUser')"/>
								</remove-association>
							</xsl:variable>
							<!-- ============================================================ -->
							<!-- Send the XDS fragment generated above to the Src Directory  -->
							<!-- ============================================================ -->
							<xsl:variable name="addResults" select="cmd:execute($srcCommandProcessor, $add-cmd-update)"/>
						</xsl:template>
						<!-- Activate acct -->
						<xsl:template name="activate-acct" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="orcl_user"/>
							<xsl:message>We are in the stylesheet Sub-Clock2 for activating an account</xsl:message>
							<xsl:message>Account has been added to Oracle</xsl:message>
							<xsl:message>Create user event in eventlog</xsl:message>
							<jdbc:statement jdbc:op-id="0" jdbc:transaction-id="0" jdbc:transaction-type="manual" jdbc:type="update">
								<jdbc:sql>
									<xsl:text>INSERT INTO idmUser.DIRECT_PROCESS</xsl:text>
									<xsl:text>(record_id, event_type, perpetrator, table_name, table_key)</xsl:text>
									<xsl:text>VALUES(idmUser.seq_log_record_id.nextval, 5, 'fake', 'view_ORCLUSERS', 'pk_USERNAME=</xsl:text>
									<xsl:value-of select="$orcl_user"/>
									<xsl:text>')</xsl:text>
								</jdbc:sql>
							</jdbc:statement>
						</xsl:template>
						<!-- Adds SQL for clock tick for Roles -->
						<xsl:template name="clock-tick-role" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:message>We are in the stylesheet Sub-Clock2 for a clock tick for Roles</xsl:message>
							<!-- Query Oracle for Roles -->
							<xsl:variable name="query2">
								<jdbc:statement jdbc:type="query">
									<jdbc:sql>
										<xsl:text>SELECT pk_ROLE FROM view_ORCLROLES</xsl:text>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:variable>
							<xsl:variable name="result2" select="query:query($destQueryProcessor,$query2)"/>
							<xsl:variable name="orcl_roles" select="$result2//jdbc:result-set/jdbc:row/jdbc:column[@jdbc:name='PK_ROLE']/jdbc:value"/>
							<xsl:message>Log the list of Oracle Roles</xsl:message>
							<xsl:for-each select="$orcl_roles">
								<xsl:message>
									<xsl:value-of select="."/>
								</xsl:message>
							</xsl:for-each>
							<!--	_________________	Query eDir for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query dest-dn="concat('~OracleOU~','\','~ConnectedSystemName~')" scope="subtree">
									<search-attr attr-name="OrclSID">
										<value type="string">~ConnectedSystemName~</value>
									</search-attr>
									<read-attr attr-name="CN"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting eDir attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="roles" select="$result//value"/>
							<xsl:choose>
								<xsl:when test="$roles">
									<xsl:for-each select="$roles">
										<xsl:if test="$orcl_roles != .">
											<xsl:message>Role has been removed from Oracle : <xsl:value-of select="."/>
											</xsl:message>
											<xsl:call-template name="deactivate-role">
												<xsl:with-param name="role" select="."/>
											</xsl:call-template>
										</xsl:if>
									</xsl:for-each>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>There are no deleted Oracle Roles for this instance</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
							<xsl:choose>
								<xsl:when test="$orcl_roles">
									<xsl:for-each select="$orcl_roles">
										<xsl:if test="$roles != .">
											<xsl:message>Role has been added to Oracle : <xsl:value-of select="."/>
											</xsl:message>
											<xsl:call-template name="activate-role">
												<xsl:with-param name="role" select="."/>
											</xsl:call-template>
										</xsl:if>
									</xsl:for-each>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>There are no new Oracle Roles for this instance</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:template>
						<!-- DeActivate Role -->
						<xsl:template name="deactivate-role" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="role"/>
							<xsl:message>We are in the stylesheet Sub-Clock2 for deactivating a role</xsl:message>
							<xsl:message>Role has been removed from Oracle</xsl:message>
							<!-- ============================================================ -->
							<!-- Generate the XDS fragment that will remove the Group from eDirectory -->
							<!-- ============================================================ -->
							<xsl:variable name="del-group" select="concat('~OracleOU~','\','~ConnectedSystemName~','\',$role)"/>
							<xsl:variable name="add-cmd-update">
								<delete class-name="Group" dest-dn="{$del-group}"/>
							</xsl:variable>
							<!-- ============================================================ -->
							<!-- Send the XDS fragment generated above to the Src Directory  -->
							<!-- ============================================================ -->
							<xsl:variable name="addResults" select="cmd:execute($srcCommandProcessor, $add-cmd-update)"/>
						</xsl:template>
						<!-- Activate Role -->
						<xsl:template name="activate-role" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="role"/>
							<xsl:message>We are in the stylesheet Sub-Clock2 for activating a Role</xsl:message>
							<xsl:message>Role has been added to Oracle</xsl:message>
							<xsl:message>Create Role event in eventlog</xsl:message>
							<jdbc:statement jdbc:op-id="0" jdbc:transaction-id="0" jdbc:transaction-type="manual" jdbc:type="update">
								<jdbc:sql>
									<xsl:text>INSERT INTO idmUser.DIRECT_PROCESS</xsl:text>
									<xsl:text>(record_id, event_type, perpetrator, table_name, table_key)</xsl:text>
									<xsl:text>VALUES(idmUser.seq_log_record_id.nextval, 5, 'fake', 'view_ORCLROLES', 'pk_ROLE=</xsl:text>
									<xsl:value-of select="$role"/>
									<xsl:text>')</xsl:text>
								</jdbc:sql>
							</jdbc:statement>
						</xsl:template>
						<!-- Adds SQL for clock tick for Role_Privs -->
						<xsl:template name="clock-tick-priv" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="cn"/>
							<xsl:param name="currenttime"/>
							<xsl:message>We are in the stylesheet Sub-Clock2 for a clock tick for Privs</xsl:message>
							<!-- Query Oracle for Privs -->
							<xsl:variable name="query2">
								<jdbc:statement jdbc:type="query">
									<jdbc:sql>
										<xsl:text>SELECT pk_GRANTEE ||'-Priv-' || pk_GRANTED_ROLE PRIV FROM view_ORCLPRIVS</xsl:text>
									</jdbc:sql>
								</jdbc:statement>
							</xsl:variable>
							<xsl:variable name="result2" select="query:query($destQueryProcessor,$query2)"/>
							<xsl:variable name="orcl_privs" select="$result2//jdbc:result-set/jdbc:row/jdbc:column[@jdbc:name='PRIV']/jdbc:value"/>
							<xsl:message>Log the list of Oracle Privs</xsl:message>
							<xsl:for-each select="$orcl_privs">
								<xsl:message>
									<xsl:value-of select="."/>
								</xsl:message>
							</xsl:for-each>
							<!--	_________________	Query eDir for existing attributes __________________ -->
							<xsl:variable name="src-query">
								<query dest-dn="concat('~OracleOU~','\','~ConnectedSystemName~')" scope="subtree">
									<search-attr attr-name="Object Class">
										<value type="string">OrclPriv</value>
									</search-attr>
									<read-attr attr-name="CN"/>
								</query>
							</xsl:variable>
							<!--	_________________	Paste exiting eDir attributes into variables __________________ -->
							<xsl:variable name="result" select="query:query($srcQueryProcessor, $src-query)"/>
							<xsl:variable name="privs" select="$result//value"/>
							<xsl:choose>
								<xsl:when test="$privs">
									<xsl:for-each select="$privs">
										<xsl:if test="$orcl_privs != .">
											<xsl:message>Priv has been removed from Oracle : <xsl:value-of select="."/>
											</xsl:message>
											<xsl:call-template name="deactivate-priv">
												<xsl:with-param name="priv" select="."/>
											</xsl:call-template>
										</xsl:if>
									</xsl:for-each>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>There are no Oracle Privs for this instance</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
							<xsl:choose>
								<xsl:when test="$orcl_privs">
									<xsl:for-each select="$orcl_privs">
										<xsl:if test="$privs != .">
											<xsl:message>Priv has been added to Oracle : <xsl:value-of select="."/>
											</xsl:message>
											<xsl:call-template name="activate-priv">
												<xsl:with-param name="priv" select="."/>
											</xsl:call-template>
										</xsl:if>
									</xsl:for-each>
								</xsl:when>
								<xsl:otherwise>
									<xsl:message>There are no new Oracle Privs for this instance</xsl:message>
								</xsl:otherwise>
							</xsl:choose>
						</xsl:template>
						<!-- DeActivate priv -->
						<xsl:template name="deactivate-priv" xmlns:Mapping="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.jdbc.util.MappingPolicy" xmlns:jdbc="urn:dirxml:jdbc">
							<xsl:param name="priv"/>
							<xsl:message>We are in the stylesheet Sub-Clock2 for Deactivating a Priv</xsl:message>
							<xsl:message>Priv has been added to Oracle</xsl:message>
							<xsl:message>Create Priv event in eventlog</xsl:message>
							<jdbc:statement jdbc:op-id="0" jdbc:transaction-id="0" jdbc:transaction-type="manual" jdbc:type="update">
								<jdbc:sql>
									<xsl:text>INSERT INTO idmUser.DIRECT_PROCESS</xsl:text>
									<xsl:text>(record_id, event_type, perpetrator, table_name, table_key)</xsl:text>
									<xsl:text>VALUES(idmUser.seq_log_record_id.nextval, 4, 'fake', 'view_ORCLPRIVS', 'pk_GRANTEE=</xsl:text>
									<xsl:value-of select="substring-before($priv,'-Priv-')"/>
									<xsl:text>+pk_GRANTED_ROLE=</xsl:text>
									<xsl:value-of select="substring-after($priv,'-Priv-')"/>
									<xsl:text>')</xsl:text>
								</jdbc:sql>
							</jdbc:statement>
						</xsl:tem