<?xml version="1.0" encoding="UTF-8"?><driver-configuration dn="Active Directory.Driver Set.null" driver-set-dn="Driver Set.null" name="Active Directory">
	<attributes>
		<configuration-manifest>
			<manifest>
				<!--                    password capabilities               -->
				<!-- supports publisher modify password notification when Active Directory password changes -->
				<capability name="password-publish"/>
				<!-- supports subscriber password and modify password commands to change Active Directory password -->
				<capability name="password-subscribe"/>
				<!-- supports subscriber verify password commands by attempting a login to Active Directory -->
				<capability name="password-check"/>
			</manifest>
		</configuration-manifest>
		<driver-filter-xml>
			<filter>
				<filter-class class-name="Group" publisher="ignore" publisher-create-homedir="true" publisher-track-template-member="false" subscriber="ignore">
					<filter-attr attr-name="CN" publisher="ignore" subscriber="ignore"/>
					<filter-attr attr-name="Description" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Full Name" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="L" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Member" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Owner" publisher="sync" subscriber="sync"/>
				</filter-class>
				<filter-class class-name="User" publisher="sync" subscriber="sync">
					<filter-attr attr-name="CN" publisher="ignore" subscriber="ignore"/>
					<filter-attr attr-name="Description" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="DirXML-ADAliasName" publisher="sync" subscriber="ignore"/>
					<!--filter-attr attr-name="DirXML-ADContext" publisher="notify" subscriber="sync"/-->
					<filter-attr attr-name="Facsimile Telephone Number" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Full Name" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Given Name" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Initials" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Internet EMail Address" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="L" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Login Allowed Time Map" publisher="sync" subscriber="sync"/>
					<!-- login disabled is not synchronized if account is controlled by entitlements-->
					<filter-attr attr-name="Login Disabled" merge-authority="default" publisher="sync" publisher-optimize-modify="true" subscriber="sync"/>
					<filter-attr attr-name="Physical Delivery Office Name" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Postal Code" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Postal Office Box" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="S" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="SA" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Surname" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Telephone Number" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="Title" publisher="sync" subscriber="sync"/>
					<filter-attr attr-name="nspmDistributionPassword" merge-authority="none" publisher="ignore" publisher-optimize-modify="false" subscriber="notify"/>
					<!-- turn on entitlement notifications when entitlements are enabled.
					if the user enables entitlements after import this will need to be
					updated manually in the driver filter config via iManager or Designer. -->
				</filter-class>
			</filter>
		</driver-filter-xml>
		<driver-image>R0lGODlhYgBPANU/AHl3bvjOkVBQTgAAAP///5WTiOXl5fbVpB4eHtnZy9e1is/LtvXryj08Nvjz27m1pNjY2I2JfcbJwnplS7e7tbKSba6olIJwVrrDuCgoJ6eqollMOfLu1Ky2rPT09Lmfcsuwez03KGpaRffguezo0efizKm+tuTdxA4NDJmcly4oHpp/X+TEmKGekPT17KO2rjMuI01AL66trfn5+dDRyu7u7r/OxaClnuTBg+3t52RjX7+/vhkYFzAwLUBAQP///yH5BAEAAD8ALAAAAABiAE8AAAb/wJ9wSCwaj8ikcpk07CI6Xy/jEwA0EA9zy+16txBAZjDgZRpSBGqAElC+8LjcWAMgBpkrzeCZGSAUET5kAhJzh4hLND1lKQYEkJGSNTuDPDeJmZoSdzo1kqCgMylrKZqnchAZKAWhrqASPAMyqLVcBIMRoJQ3EQAAERoSn5I7KDw0tspJBQMCM8W+wBEFBRERKRKgKc4zy99DHgg82pAeMsAFKRoy7TIaKQUUHpEzgx3g4BEDOpLo2DIoSJBAg8ZACjJS7CjWDYkEKAJ8SJxIsaLFixgzZhSAIgOESDuA3RBIA4KBk38MUrhBI5IHHyggGIGgQ9YABDhz6tzJs6fP/59AETQoR6CGtZElDdTwwNRDjZQU5kVqpqGIDFk9HC1tyrWr169gw4ptKulhCgp7lkKr59QADQofIRnTQYQCChQR1r7ay7ev374aCsiQAKGGXlE1IAyMpMrHEAhqKPydTLmyK3Vo+fD14JZojQYZhMwAMEBXXwgJUqtezVp1wdc0WsueXfCRpGCEDfOdkZiovQxaDKDokYNvAgs6dPxazrz5r+TQlTuf3jy6cnpTB2vuy7mlOdA1fsgozffB8mvV0qtXj369+/fwq12LC+mGjD3YN/+JVGOKgR8AoCDZK+YB04IFFjyg4IIMLnjDDQ1GKOGEC1rQgneQIISfX5zZRv8AZD38pwMC9IGSwC8FJIjBAiy26KKLUb0o44w0tojBAwtFQoN2+e3FWXGQjCdADj8IgICHoFgAQIoPLJDACSVEKeWUUZ7AIpVYZqlllQkssEN+HghU2GGh8GaAXqRFEJ6RSEbiwjUtNHkCCRzUaeeddp6QGp589umnnSUkQJgkgGzoo1L89YCCDN6w6UoO1MhJpwOUVlppnQw4MEJqlnbq6aefcmClBIcZNOYrvBETpDOGFHnkoxHESUMJHIBKKQO4MrBpArb22isHge6AIQEzQJBWH5LM4JRu5qwSwX+utgkJpBYsMKevI2SbbQIl+OrtpyRYKSwof5i0FVM1LAX/ig7O7DCEo6FQa22tneaa7QH4HjBClN/2e2mgGBRQIrE5oGRADmqBsk8GGkAbLaxy0nurvfcGgO++JPjrLwfhLlANUZRFcEw2RMALCqQRV5qrrtoGYHG2k2rcL8cn3GCNDNK+QgO7PESwgzfvvhpvBAL00MACKjPQQgMNKDBBCC7rO0LMMvdaQAMCAKvBDVHoQIGqrhgAAFYKhVey0CdHkIEsETiwMgx3gPD0xdnWWbXV/OTBQQcCxKpDDwAoBDIBHuiwBgo6yPClESZLAqkKMITAQ74H4DDABAN8ELW+utp9N6ikOcC0A4H78HcEDSx3GGkICIAU0EU0HsnjMKww/4AC+V7AwweZiyCCvifo0IAOJVy9gAg6OFACAFg/UOnVIiBN6dUNFEBpA3c0cBcaCwhwtQZ9+8KBJDWl0AENZh8h+7QRQM7CABvky4MIvH8QQggjnICACBb0APgAPdBBAUrQAwE8oACsIB0KLCACFHRLBD1AUA9E4IAHiGAAD/DfA3SwsxQ0gAICaEE1xheJmsiAHkpYHwFox4INoABfILhd/e43ApHp6gENuKDzHLCPbjnAcKJrgANO1KUBWIBSFhgA0kI3OnVw0ActEMDWWkBCSNTkDUtQIQsrMIAKHGADKjjADPG3gQZ0jgOho5QAhEipByiRNNXj1T4sVRrSDf8giEMEgA56IcUHyMACVSTAFZmgxfbBgAUH4EEMAoCCFYgxczRk2hnTiMc2YtABBeAIPyjpgAEAwI54TM0C4iSBDihIA4EcZBbR5jhDIvKCtsNBAMY4AhHAQFc0AMAFKzWi5w2gBCyiFGlIw6shGhGUo1uNQUz5AFSSjwdYTCErZ+fKACiADRtwGS2b8YARBIiSbtzh6ESAgG7tYwEo+KQCu8VEIa5mIMy8QSqhSchpss99+FJBF7UJyRDgynDaKwAnEYi9BnRrAThpQB0R6j8ESC90cIyAauCpIHk+M5pJKOQKKsACiylAcy7DwQdwAAIQjABXC7BAAkiQgB1WqgT/TerUAlzaRpq2lFIzpUBqDIKBeM4To0go5AcUgMgDuOyoR70YrmCWsc99KwGvkQAFOrC1Avy0njmD1FA7alSkJpVz2iJBU53qK6jytANUFeFVV5nVCAz1AxOIq1c3py2Y/YKmZPVUQQbS07Ra9aJYhdVQN0CGAYBgrnQbgQWmRgZ15vVTBpEABqZKVZutVZpt/QAI1iCLbHr1Yha4w7408IBiPtZTksXAZNGqAbUClq2CvUAZLoiCo4LgAhOoQAAiEAIyXEADv5AGr070yeItyYcyS+1qK/vXEtITtkP7AAwGQD8y6BZzhVVBbwtLGuqSwXqkEQA603kX0/pLtaql/2xrU3DZjNpzhRGwXeYOsIYYxLCL962AbAewqcYKwBmiG0Am60gaCspsspNV7w3Y+1rMwuqCmfuAPi9HBqSOYL/99WQzHEiGEpDBaHdAQNUSvFwNBKa9QX0vpGxSWDLYRJsfYMF+D5CAxnrYk9R1wBpEwJwRI1jBDHYuUNWn4u6KIK4TWENhK8C7zO2XBTX2pAP+u4Yj/veTF+zBiKOyXKoG2YrPdXC8eouCogYgBmTYLhniJ19+NBaTZEABTpXMBult7MeU9TKKiZxVAWzgAmaG6wQ0G9fDGrUCcYXrBRZ74QtEQFsnEGgBTsCyulr60iNYwI/RqucGu7etGzhyXP8rIEtrxlUBc03qCBKLaUxT7tWvXoAJugyPPTNOxftosW9nSQaQpnpzrM4Woyn362JrmrIIsaiQAzu0NX9gBTYZ6QdG6rKOppqrll4BCvCHr2J722ULmCoFeqpsMA/51jkzQK4ngC8c1NdpE4B3BSqwggDgYAUTWIEs7z2BC+BuArLgQbz5fYEYBwDfK5CbXAOA6AsgFcHktnXscE2GCVgsAIRVARe7SAZ9wqACd2kgCirA4gG02bd0HoAPOsAIHtD5LAr1WlS4rNoOlFuQYf70o5pxuaNid+Mbp+4K0HwBHGB3AGFEcxh7G4JEDiAGHeA5ABgxgOGtQQcYIIMG0Kv/Wr7aXOJna2vFL57xJm98AziwHNIlV1h252sETL9m5jpgguy1fCD/7cE+fDCQvvc94p5Osdip21EW1NfsFU/7GjaA5DWw+6MfgPsAQiD3D9Dd7gAcyHhU7km/+x3wy4Zu2tZMb5vM27qJP/PlcEDYjh+A6ZKHwQjusAEKcMOTjOhB36mOAs97ngLODL2YT8ZzXQMa6GMXKZ0buXwF1LKwImuxDzCQ+9fkmoOwyT4GZAD2oOXMBRbYQKjjugKimjreo047DhSAcFSzAN8R4FykfxEl5OggBSZ4iA4kmhoKkEGntNFT3ScERgIkopBSGLBSp9UrJtCA+dca7NIAszFR/xQwgA/jCjD1ALMiMQvYKQ5oAjbQGr9wAxMIVTuQAIehSkowIsMiCS5wAk2yUp7TgZXygVx3gzjIdSbQARIQSLiAAO6yBHYwIK4gKizCLWKVhEq4hEzYhEz4AlAYhVI4hR/YgFG4AD5IAAiQAcmwBONhGq/gNicwhmRYhmZ4hmiYhjO3hmzIZeN2gxsYCnbRADKxBAbAAwhggK4wA5iyMn74h4AYiII4iH/IAS7gCuwCAESyBASQJpbxiJAYiZFgF9AEO0oAAYwgA5K4iZy4FzQwBgBQh1tAAbIAADnTiahIGR6gAZ2gDV6wA2OQARGQGQZTi7Z4i7iYi7q4iwYDAU47kAKDgDiL8wXqpmRBcYzImIzKmBNk4AMRIAFakArApRHUWI3WeI0XIQACRAFnogl+AAHgGI7iOI7kWI7meI7oiI6Ikg/s2I7u+I6oEAQAOw0K</driver-image>
		<log-events inherit="true"/>
		<trace-file inherit="true"/>
		<trace-size-limit inherit="true"/>
		<trace-level inherit="true"/>
		<driver-trace-level inherit="true"/>
		<log-limit inherit="true"/>
		<native-module value="addriver.dll"/>
		<driver-cache-limit value="0"/>
		<driver-start-option no-resync="false" value="1"/>
		<shim-config-info-xml>
			<driver-config name="Active Directory Driver">
				<driver-options>
					<configuration-values>
						<definitions>
							<header display-name="Authentication Options"/>
							<group>
								<definition display-name="Show authentication options" name="auth-options" type="enum">
									<description>Show driver authentication options. These parameters control how the driver shim authenticates to the Active Directory domain controller.</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="Authentication Method" name="auth-method" type="enum">
										<description>Select a method to authenticate with Active Directory:

[Negotiate] - Use Microsoft security package to negotiate logon type. Typically Kerberos or NTLM is selected.

[Simple] - LDAP style simple bind for logon.</description>
										<enum-choice display-name="Negotiate">Negotiate</enum-choice>
										<enum-choice display-name="Simple">Simple</enum-choice>
										<value>Negotiate</value>
									</definition>
									<definition display-name="Digitally sign communications" name="signing" type="enum">
										<description>When enabled, communication between the driver shim and Active Directory is digitally signed. This does not hide the data from view on the network but reduces the chance of security attacks. Signing only works when you use the [Negotiate] authentication method and the underlying security provider selects NTLM2 or Kerberos for its protocol. Do not use this option with SSL.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
									<definition display-name="Digitally sign and seal communications" name="sealing" type="enum">
										<description>When enabled, communication between the driver shim and Active Directory is digitally encrypted. Sealing only works when you use the [Negotiate] authentication method and the underlying security provider selects NTLM2 or Kerberos for its protocol. Do not use this option with SSL.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
									<definition display-name="Use SSL for encryption" name="use-ssl" type="enum">
										<description>When enabled, communication between the driver shim and Active Directory is digitally encrypted. This option can be used with either the [Negotiate] or [Simple] authentication option. SSL requires that the Microsoft server running the driver shim has had the domain controller server certificate imported.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
									<definition display-name="Logon and impersonate" name="impersonation" type="enum">
										<description>Logon and impersonate driver authentication account for CDOEXM and Password Set support. If no, the driver performs a network logon only. If yes, the driver performs a local logon. The authentication account must have right assignments as described in the Administration Guide.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>yes</value>
									</definition>
								</subordinates>
							</group>
							<header display-name="Exchange Options"/>
							<group>
								<definition display-name="Show Microsoft Exchange options" name="xchg-options" type="enum">
									<description>Show Microsoft Exchange options. These parameters control whether the driver shim uses the Microsft CDOEXM Exchange management APIs and whether to interpret changes in the homeMDB attribute as a move or delete of the mailbox.</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="Use CDOEXM for Exchange (yes/no)" name="use-CDOEXM" type="enum">
										<description>Exchange mailboxes can be controlled by calls into the Microsoft Exchange management system instead of regular attribute synchronization. When enabled, the driver shim intercepts changes to the Active Directory homeMDB attribute and calls into the CDOEXM (Collaboration Data Objects for Exchange Management) subsystem. The value you choose here is recorded in the driver shim configuration.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
									<definition display-name="Allow CDOEXM Exchange mailbox move (yes/no)" name="cdoexm-move" type="enum">
										<description>When enabled, the driver shim intercepts modifications to the Active Directory homeMDB attribute and calls into CDOEXM to move the mailbox to the new message data store.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
									<definition display-name="Allow CDOEXM Exchange mailbox delete (yes/no)" name="cdoexm-delete" type="enum">
										<description>When enabled, the driver shim intercepts removal for the Active Directory homeMDB attribute and calls into CDOEXM to delete the mailbox.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
								</subordinates>
							</group>
							<header display-name="Access Options"/>
							<group>
								<definition display-name="Show access options" name="access-options" type="enum">
									<description>Show domain controller access options.  These parameters controls the scope of Active Directory queries along with several publisher polling and timeout parameters.</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="Driver Polling Interval" name="pollingInterval" type="integer">
										<description>Enter the number of minutes to delay before querying Active Directory for changes. A larger number reduces the load on Active Directory, but also reduces the responsiveness of the Identity Manager driver.</description>
										<value>1</value>
									</definition>
									<definition display-name="Publisher heartbeat interval" name="pub-heartbeat-interval" type="integer">
										<description>>Configures the driver shim to send a periodic status message on the publisher channel when there has been no publisher traffic for the given number of seconds.</description>
										<value>0</value>
									</definition>
									<definition display-name="Password Sync Timeout (minutes)" name="pub-password-expire-time" type="integer">
										<description>Specify the number of minutes for the driver to attempt to sync a given password. The driver will not try to sync the password once this interval has been exceeded. It is recommended that this value be set to at least three times the polling interval.  For example, if the poll interval is 10, the password sync timeout value should be set to 30 or higher.</description>
										<value>5</value>
									</definition>
									<definition display-name="Search domain scope" name="search-domain-scope" type="enum">
										<description>Ordinarilly the shim will read specific information from other domains when objects in those domains are referenced. If the account you use for authentication has no rights in the other domain, the read may fail. Enable this option if you get access errors during regular operations.</description>
										<enum-choice display-name="Yes">yes</enum-choice>
										<enum-choice display-name="No">no</enum-choice>
										<value>no</value>
									</definition>
								</subordinates>
							</group>
						</definitions>
					</configuration-values>
				</driver-options>
			</driver-config>
		</shim-config-info-xml>
		<global-config-values>
			<configuration-values>
				<definitions>
					<header display-name="Driver parameters"/>
					<definition display-name="Connected System or Driver Name" name="ConnectedSystemName" type="string">
						<description>The name of the connected system, application or Identity Manager driver. This value is used by the e-mail notification templates to identity the source of notification messages.</description>
						<value xml:space="preserve">Active Directory</value>
					</definition>
					<group>
						<definition display-name="Exchange policy" name="ExchMailboxPolicy" type="enum">
							<description>Choose a method for managing Exchange mailboxes: 
 
[Entitlements] assign the user to the entitled message data store

[Implement in policy] assign the user to a message data store based on driver policy 

[None] do not manage Exchange mailboxes</description>
							<enum-choice display-name="Implement in policy">policy</enum-choice>
							<enum-choice display-name="None">none</enum-choice>
							<value>none</value>
						</definition>
						<subordinates active-value="policy">
							<definition display-name="Default Exchange MDB:" name="exch-default-mdb" type="string">
								<value/>
							</definition>
						</subordinates>
					</group>
					<header display-name="Password Management"/>
					<group>
						<definition display-name="Show password management policy" name="pwd-mgt-display" type="enum">
							<enum-choice display-name="show">show</enum-choice>
							<enum-choice display-name="hide">hide</enum-choice>
							<value>show</value>
						</definition>
						<!-- "group leader" definition is the value for displaying subordinates -->
						<subordinates active-value="show">
							<definition display-name="Application accepts passwords from Identity Manager" name="enable-password-subscribe" type="boolean">
								<description>If true, allows passwords to flow from the Identity Manager data store to the connected system.</description>
								<value>true</value>
							</definition>
							<definition display-name="Identity Manager accepts passwords from application" name="enable-password-publish" type="boolean">
								<description>If true, allows passwords to flow from the connected system to the Identity Manager 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 Identity Manager 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 Identity Manager 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 Identity Manager 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>
						</subordinates>
					</group>
					<header display-name="Name Mapping Policy"/>
					<group>
						<definition display-name="Show name mapping policy" name="name-map-display" type="enum">
							<enum-choice display-name="show">show</enum-choice>
							<enum-choice display-name="hide">hide</enum-choice>
							<value>show</value>
						</definition>
						<!-- "group leader" definition is the value for displaying subordinates -->
						<subordinates active-value="show">
							<definition display-name="Full Name Mapping" name="FullNameMap" type="boolean">
								<description>When Full Name Mapping is selected for user accounts, the driver will keep the Identity Vault Full Name synchronized with the Active Directory object name and display name. This policy is useful when creating user accounts in Active Directory using the Microsoft Management Console Users and Computers snap-in.</description>
								<value>true</value>
							</definition>
							<definition display-name="Logon Name Mapping" name="LogonNameMap" type="boolean">
								<description>When Logon Name Mapping is selected for user accounts, the driver will keep the Identity Vault object name sychronized with the Active Directory Pre-Windows 2000 Logon Name (also known as the NT Logon Name and the sAMAccountName). This policy is useful when creating user accounts in Active Directory using the Microsoft Management Console Users and Computers snap-in.</description>
								<value>true</value>
							</definition>
							<definition display-name="User Principal Name Mapping:" name="UpnMap" type="enum">
								<description>Choose a method for managing the Active Directory Logon Name (also known as the userPrincipalName). userPrincipalName takes the form of an e-mail address, as in 'user@domain.com' and can be used instead of the traditional NT Logon Name for identification. Although the shim can place any value into userPrincipalName, it will not be useful as a logon name unless the domain is configured to accepts the domain name used with the name.

[Follow Active Directory e-mail address] When selected, userPrincipalName follows the value of the Active Directory mail attribute. This option is useful when you want the user's e-mail address to be used for authentication and Active Directory (and likely Microsoft Exchange) is authoritive for e-mail addresses.

[Follow Identity Vault e-mail address]This option is useful when you want the user's e-mail address to be used for authentication and the vault (and perhaps Groupwise or another integrated e-mail system) is authoritive for e-mail addresses.

[Follow Identity Vault name] This option is useful when you want to generate userPrincipalName from the user logon name plus a hard-coded string defined in policy.

[None]This option is useful when you do not want to control userPrincipalName or want to implement your own policy.</description>
								<enum-choice display-name="Follow Active Directory e-mail address">ad-mail-auth</enum-choice>
								<enum-choice display-name="Follow Identity Vault e-mail address">edir-mail-auth</enum-choice>
								<enum-choice display-name="Follow Identity Vault name">edir-name-auth</enum-choice>
								<enum-choice display-name="None">none</enum-choice>
								<value>none</value>
							</definition>
						</subordinates>
					</group>
				</definitions>
			</configuration-values>
		</global-config-values>
		<mapping-rule dn="SchemaMapping.Active Directory.Driver Set.null"/>
		<input-transform dn="InputTransform.Active Directory.Driver Set.null"/>
		<output-transform dn="OutputTransform.Active Directory.Driver Set.null"/>
	</attributes>
	<children>
		<publisher name="Publisher">
			<attributes>
				<command-transformation-rule dn="UserNameMap.Publisher.Active Directory.Driver Set.null"/>
				<create-rule dn="Creation.Publisher.Active Directory.Driver Set.null"/>
				<event-transformation-rule dn="Event Transform.Publisher.Active Directory.Driver Set.null"/>
				<matching-rule dn="Matching.Publisher.Active Directory.Driver Set.null"/>
				<placement-rule dn="Placement.Publisher.Active Directory.Driver Set.null"/>
			</attributes>
			<children>
				<rule name="Event Transform">
					<policy>
						<rule>
							<description>setup for move validation</description>
							<comment>Gather information needed for move validation.</comment>
							<conditions>
								<and>
									<if-operation op="equal">move</if-operation>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="cached-object-value">
									<arg-string>
										<token-parse-dn length="-2" start="0">
											<token-dest-attr name="DirXML-ADContext"/>
										</token-parse-dn>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="current-object-value">
									<arg-string>
										<token-src-dn convert="true" length="-2" start="0"/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule>
							<description>setup for rename validation</description>
							<comment xml:space="preserve">Gather information needed for rename validation.</comment>
							<conditions>
								<and>
									<if-operation op="equal">rename</if-operation>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="cached-object-value">
									<arg-string>
										<token-parse-dn start="-1">
											<token-dest-attr name="DirXML-ADContext"/>
										</token-parse-dn>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="current-object-value">
									<arg-string>
										<token-src-dn convert="true" start="-1"/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule>
							<description>move or rename validation</description>
							<comment>The driver shim cannot tell the difference between a move and a rename in Active Directory so publishes both. The last known object DN is cached in the Identity Vault and then used to decide whether a given move or rename operation is real. This rule will veto moves and renames that are already reflected in the cached value.</comment>
							<conditions>
								<and>
									<if-local-variable mode="regex" name="cached-object-value" op="equal">.*</if-local-variable>
									<if-xpath op="true">$cached-object-value = $current-object-value</if-xpath>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>move or rename cached context update</description>
							<comment xml:space="preserve">Update cached context when move or rename is valid.</comment>
							<conditions>
								<and>
									<if-local-variable mode="regex" name="cached-object-value" op="equal">.*</if-local-variable>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value direct="true" name="DirXML-ADContext">
									<arg-value>
										<token-src-dn/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>veto move</description>
							<comment xml:space="preserve">Gather information needed for move validation.</comment>
							<conditions>
								<and>
									<if-operation op="equal">move</if-operation>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Matching">
					<policy>
						<description>Find a matching unassociated object in the Identity Vault.</description>
						<rule>
							<description>Copy OUmapAD GCV into a local variable</description>
							<comment xml:space="preserve">Copy OUmapAD GCV into a local variable</comment>
							<conditions>
								<and>
									<if-class-name mode="nocase" op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="OUmapAD">
									<arg-node-set>
										<token-global-variable name="OUmapAD"/>
									</arg-node-set>
								</do-set-local-variable>
								<do-set-local-variable name="OUsource">
									<arg-string>
										<token-src-dn length="-2"/>
									</arg-string>
								</do-set-local-variable>
								<do-for-each>
									<arg-node-set>
										<token-local-variable name="OUmapAD"/>
									</arg-node-set>
									<arg-actions>
										<do-set-local-variable name="destDN">
											<arg-string>
												<token-xpath expression="concat($destDN,substring-after($current-node,concat($OUsource,'#')))"/>
											</arg-string>
										</do-set-local-variable>
									</arg-actions>
								</do-for-each>
								<do-set-local-variable name="inScope">
									<arg-string>
										<token-local-variable name="OUsource"/>
										<token-text xml:space="preserve">#</token-text>
										<token-local-variable name="destDN"/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule disabled="true">
							<description>remember relative position in hierarchy</description>
							<comment>The default policy assumes that you want to synchronize a subset of Active Directory with the Identity Vault. this rule marks events in the given containers for processing by adding the unmached-src-dn operational property. You can add subtrees in Active Directory t for inclusion by adding if-src-dn conditionals here. If you are using mirrored placement, the unmatched-src-dn is used later in the placement rule. If you do not use container based scoping, this rule may be modified or removed. If you change this rule, the placement rules must also be changed to reflect your policy.</comment>
							<conditions>
								<or>
									<if-src-dn op="in-subtree" xml:space="preserve">OU=Users,OU=Quebec,DC=domain,DC=com</if-src-dn>
								</or>
							</conditions>
							<actions>
								<do-set-op-property name="unmatched-src-dn">
									<arg-string>
										<token-unmatched-src-dn convert="true"/>
									</arg-string>
								</do-set-op-property>
							</actions>
						</rule>
						<rule>
							<description>veto out-of-scope events</description>
							<comment>When scoping by container, events outside of the Active Directory containers defined in the above rule will not have a unmatched-src-dn operational property and will be vetoed. If you do not want to use container based scoping, this rule should be modified or removed.</comment>
							<conditions>
								<and>
									<if-xpath op="not-true">$inScope=$OUmapAD</if-xpath>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>match users based on NT logon name</description>
							<comment xml:space="preserve">Logon name policy: match object name from the Identity Vault to the NT logon name in Active Directory. Objects are matched anywhere in the destination hierarchy, not just the relative position in the hierarchy. This match is not performed if a matching object was found in a previous rule.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">User</if-class-name>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">true</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="entry">
									<arg-dn>
										<token-local-variable name="destDN"/>
										<token-text xml:space="preserve">\</token-text>
										<token-attr name="DirXML-ADAliasName"/>
									</arg-dn>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule>
							<description>match users based on full name</description>
							<comment xml:space="preserve">Full name policy: </comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">User</if-class-name>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subordinates">
									<arg-dn>
										<token-local-variable name="destDN"/>
									</arg-dn>
									<arg-match-attr name="Full Name">
										<arg-value type="string">
											<token-src-name/>
										</arg-value>
									</arg-match-attr>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule disabled="true">
							<description>match everything else</description>
							<comment xml:space="preserve">Match objects in Active Directory based on the object name and relative position in the hierarchy. This match is not performed if a matching object was found in a previous rule.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="not-equal">User</if-class-name>
									<if-src-dn op="in-subtree" xml:space="preserve">OU=Users,OU=Quebec,DC=domain,DC=com</if-src-dn>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="entry">
									<arg-dn>
										<token-text xml:space="preserve">deltaguitars\quebec\users</token-text>
										<token-text xml:space="preserve">\</token-text>
										<token-src-name/>
									</arg-dn>
								</do-find-matching-object>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Creation">
					<policy>
						<rule>
							<description>add attributes for all objects</description>
							<comment>DirXML-AppliationAttrs is an aux class that holds attributes generally useful to drivers. DirXML-ADContext is used by this driver to track the Active Directory object name which is useful for telling whether a publisher move or rename is redundant.</comment>
							<conditions>
								<or/>
							</conditions>
							<actions>
								<do-add-dest-attr-value name="Object Class">
									<arg-value type="string">
										<token-text xml:space="preserve">DirXML-ApplicationAttrs</token-text>
									</arg-value>
								</do-add-dest-attr-value>
								<do-set-dest-attr-value name="DirXML-ADContext">
									<arg-value type="string">
										<token-src-dn/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>add attributes for user objects</description>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-default-attr-value name="Surname">
									<arg-value>
										<token-text xml:space="preserve">UNKNOWN</token-text>
									</arg-value>
								</do-set-default-attr-value>
							</actions>
						</rule>
						<rule>
							<description>set user default password</description>
							<comment>Sets a default password for the user if none exists. If you have enabled password sync, the default password will be replaced on the next password change operation. If the driver shim has cached a password from a recent add event in Active Directory, it will be published shortly after this command completes. Otherwise, the default password will remain in effect until the password is changed in either the Identity Vault or Active Directory.</comment>
							<conditions>
								<and>
									<if-class-name mode="nocase" op="equal">User</if-class-name>
									<if-password op="not-available"/>
									<if-op-attr name="Surname" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-password>
									<arg-string>
										<token-text xml:space="preserve">@Dirxml1</token-text>
									</arg-string>
								</do-set-dest-password>
							</actions>
						</rule>
						<rule>
							<description>update Active Directory logon name</description>
							<comment xml:space="preserve">Update Active Directory logon name  (userPrincipalName) when logon name is configured to follow e-mail address and e-mail address is present.</comment>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="UpnMap" op="equal">ad-mail-auth</if-global-variable>
									<if-op-attr name="Internet EMail Address" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-set-op-property name="windows-2000-logon-name">
									<arg-string>
										<token-attr name="Internet EMail Address"/>
									</arg-string>
								</do-set-op-property>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Placement">
					<policy>
						<rule>
							<description>placement for all objects</description>
							<comment xml:space="preserve">Construct a destination DN for all object types assuming simple object name mapping.</comment>
							<conditions>
								<or/>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-text xml:space="preserve">deltaguitars\quebec\users</token-text>
										<token-text xml:space="preserve">\</token-text>
										<token-src-name/>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
						<rule>
							<description>optional logon name mapping</description>
							<comment xml:space="preserve">Logon name mapping: Modify the destination DN so that the NT Logon Name (sAMAccountName) names the object.</comment>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">true</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-dest-dn length="-2"/>
										<token-text xml:space="preserve">\</token-text>
										<token-escape-for-dest-dn>
											<token-attr name="DirXML-ADAliasName"/>
										</token-escape-for-dest-dn>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="UserNameMap" next-transform="Command Transform.Publisher.Active Directory.Driver Set.null">
					<policy>
						<description>A set of rules that implement the user name mapping options</description>
						<rule>
							<description>consider user objects when name mapping is enabled</description>
							<comment xml:space="preserve">Skip processing if event is not of interest to name mapping policy.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="not-equal">User</if-class-name>
								</and>
								<and>
									<if-global-variable mode="case" name="FullNameMap" op="equal">false</if-global-variable>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">false</if-global-variable>
									<if-global-variable mode="case" name="UpnMap" op="equal">none</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-break/>
							</actions>
						</rule>
						<rule>
							<description>full name mapping: discard unwanted renames</description>
							<comment xml:space="preserve">When mapping Full Name, renames are vetoed.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
									<if-operation op="equal">rename</if-operation>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>logon name mapping: map NT logon name to Identity Vault object name</description>
							<comment xml:space="preserve">Logon name policy: Keep destination object name in sync when logon name (sAMAccountName) changes.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">true</if-global-variable>
									<if-operation op="equal">modify</if-operation>
									<if-op-attr name="DirXML-ADAliasName" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-rename-dest-object when="after">
									<arg-string>
										<token-text>CN=</token-text>
										<token-escape-for-dest-dn>
											<token-op-attr name="DirXML-ADAliasName"/>
										</token-escape-for-dest-dn>
									</arg-string>
								</do-rename-dest-object>
							</actions>
						</rule>
						<rule>
							<description>map e-mail address to Active Directory logon name</description>
							<comment>Update Active Directory logon name (userPrincipalName) when logon name is configured to follow Active Directory e-mail address and e-mail address is being added.</comment>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="UpnMap" op="equal">ad-mail-auth</if-global-variable>
									<if-op-attr name="Internet EMail Address" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-set-src-attr-value class-name="User" name="userPrincipalName">
									<arg-value>
										<token-op-attr name="Internet EMail Address"/>
									</arg-value>
								</do-set-src-attr-value>
							</actions>
						</rule>
						<rule>
							<description>unmap e-mail address from Active Directory logon name</description>
							<comment>Update Active Directory logon name (userPrincipalName) when logon name is configured to follow Active Directory e-mail address and e-mail address is being removed.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="UpnMap" op="equal">ad-mail-auth</if-global-variable>
									<if-op-attr mode="regex" name="Internet EMail Address" op="changing-from">.+</if-op-attr>
								</and>
							</conditions>
							<actions>
								<do-remove-src-attr-value class-name="User" name="userPrincipalName">
									<arg-value>
										<token-op-attr name="Internet EMail Address"/>
									</arg-value>
								</do-remove-src-attr-value>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Command Transform" next-transform="Command Transform SS.Publisher.Active Directory.Driver Set.null">
					<policy>
						<rule>
							<description>set cached context value on merge</description>
							<conditions>
								<and>
									<if-operation op="equal">modify</if-operation>
									<if-xpath op="not-true">@from-merge='true'</if-xpath>
								</and>
							</conditions>
							<actions>
								<do-add-dest-attr-value name="Object Class">
									<arg-value type="string">
										<token-text xml:space="preserve">DirXML-ApplicationAttrs</token-text>
									</arg-value>
								</do-add-dest-attr-value>
								<do-set-dest-attr-value name="DirXML-ADContext">
									<arg-value type="string">
										<token-src-dn/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>Set Equivalent To Me when adding object to a group</description>
							<comment xml:space="preserve">The Identity Vault gives group members the rights of the group by adding the object to the "Equivalent to Me" attribute. Add the object now.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">Group</if-class-name>
									<if-op-attr name="Member" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-clone-op-attr dest-name="Equivalent To Me" src-name="Member"/>
							</actions>
						</rule>
						<rule>
							<description>Remove Equivalent To Me when removing object from a group</description>
							<comment xml:space="preserve">The identity Vault gives group members the rights of the group by adding the object to the "Equivalent to Me" attribute. Remove the object now.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">Group</if-class-name>
									<if-op-attr mode="regex" name="Member" op="changing-from">.+</if-op-attr>
								</and>
							</conditions>
							<actions>
								<do-remove-dest-attr-value name="Equivalent To Me">
									<arg-value type="string">
										<token-xpath expression="./modify-attr[@attr-name='Member']/remove-value/value"/>
									</arg-value>
								</do-remove-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>remove managed attributes when object disassociated</description>
							<comment>Remove the attributes used to manage the state of the object for this driver when it is disassociated. Since the driver does not maintain the state of a disassociated object, these values are not reliable.</comment>
							<conditions>
								<and>
									<if-operation op="equal">remove-association</if-operation>
								</and>
							</conditions>
							<actions>
								<do-clear-dest-attr-value name="DirXML-ADAliasName" when="after"/>
								<do-clear-dest-attr-value name="DirXML-ADContext" when="after"/>
							</actions>
						</rule>
						<rule>
							<description>Prevent unassociated users from being removed from groups</description>
							<conditions>
								<and>
									<if-operation op="equal">modify</if-operation>
									<if-class-name op="equal">Group</if-class-name>
									<if-op-attr name="Member" op="changing"/>
								</and>
							</conditions>
							<actions>
								<do-for-each>
									<arg-node-set>
										<token-removed-attr name="Member"/>
									</arg-node-set>
									<arg-actions>
										<do-set-local-variable name="memberDN">
											<arg-node-set>
												<token-local-variable name="current-node"/>
											</arg-node-set>
										</do-set-local-variable>
										<do-for-each>
											<arg-node-set>
												<token-xpath expression='query:readObject($destQueryProcessor, "", $memberDN,"", "")[not(association/text())]'/>
											</arg-node-set>
											<arg-actions>
												<do-strip-xpath expression="$memberDN"/>
											</arg-actions>
										</do-for-each>
									</arg-actions>
								</do-for-each>
							</actions>
						</rule>
					</policy>
				</rule>
				<stylesheet name="Command Transform SS" next-transform="Password(Pub)-Default Password Policy.Publisher.Active Directory.Driver Set.null">
					<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
						<!-- Publisher command policy -->
						<!-- filter out add-attr or modify-attr when any sibling has namespace=99 -->
						<xsl:template match="add-attr[@attr-name='nadLoginName'][../add-attr[@attr-name='nadLoginName']/value/component[@name='nameSpace']/text()='99']"/>
						<xsl:template match="modify-attr[@attr-name='nadLoginName'][../modify-attr[@attr-name='nadLoginName']/add-value/value/component[@name='nameSpace']/text()='99']"/>
						<!-- identity transformation -->
						<xsl:template match="@*|node()">
							<xsl:copy>
								<xsl:apply-templates select="@*|node()"/>
							</xsl:copy>
						</xsl:template>
					</xsl:stylesheet>
				</stylesheet>
				<rule name="Password(Pub)-Default Password Policy" next-transform="Password(Pub)-Check Password GCV.Publisher.Active Directory.Driver Set.null">
					<policy>
						<rule>
							<description>On User add, provide default password of @Dirxml1 if no password 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">@Dirxml1</token-text>
									</arg-string>
								</do-set-dest-password>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Pub)-Check Password GCV" next-transform="Password(Pub)-Publish Distribution Password.Publisher.Active Directory.Driver Set.null">
					<policy>
						<description>Publish Passwords</description>
						<rule>
							<description>Block publishing passwords to Identity Manager 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 Identity Manager 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)-Publish Distribution Password" next-transform="Password(Pub)-Publish NDS Password.Publisher.Active Directory.Driver Set.null">
					<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" next-transform="Password(Pub)-Add Password Payload.Publisher.Active Directory.Driver Set.null">
					<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="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">addPayloadToPassword</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>
			</children>
		</publisher>
		<subscriber name="Subscriber">
			<attributes>
				<command-transformation-rule dn="Command.Subscriber.Active Directory.Driver Set.null"/>
				<create-rule dn="Creation.Subscriber.Active Directory.Driver Set.null"/>
				<matching-rule dn="Matching.Subscriber.Active Directory.Driver Set.null"/>
				<placement-rule dn="Placement.Subscriber.Active Directory.Driver Set.null"/>
			</attributes>
			<children>
				<rule name="Matching">
					<policy xmlns:jstring="http://www.novell.com/nxsl/java/java.lang.String">
						<description>Find matching object in Active Directory</description>
						<rule>
							<description>Copy OUmapAD GCV into a local variable</description>
							<comment xml:space="preserve">Copy OUmapAD GCV into a local variable</comment>
							<conditions>
								<and>
									<if-class-name mode="nocase" op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="OUmapAD">
									<arg-node-set>
										<token-global-variable name="OUmapAD"/>
									</arg-node-set>
								</do-set-local-variable>
								<do-set-local-variable name="OUsource">
									<arg-string>
										<token-src-dn length="-2"/>
									</arg-string>
								</do-set-local-variable>
								<do-for-each>
									<arg-node-set>
										<token-local-variable name="OUmapAD"/>
									</arg-node-set>
									<arg-actions>
										<do-set-local-variable name="destDN">
											<arg-string>
												<token-xpath expression="concat($destDN,substring-before($current-node,concat('#',$OUsource)))"/>
											</arg-string>
										</do-set-local-variable>
									</arg-actions>
								</do-for-each>
								<do-set-local-variable name="inScope">
									<arg-string>
										<token-local-variable name="destDN"/>
										<token-text xml:space="preserve">#</token-text>
										<token-local-variable name="OUsource"/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule disabled="true">
							<description>remember relative position in hierarchy</description>
							<comment>The default policy assumes that you want to synchronize a subset of the Identity Vault with Active Directory. this rule marks events in the given containers for processing by adding the unmached-src-dn operational property. You can add subtrees in the Identity Vault for inclusion by adding if-src-dn conditionals here. If you are using mirrored placement, the unmatched-src-dn is used later in the placement rule. If you do not use container based scoping, this rule may be modified or removed. If you change this rule, the placement rules must also be changed to reflect your policy.</comment>
							<conditions>
								<or>
									<if-src-dn op="in-subtree" xml:space="preserve">deltaguitars\quebec\users</if-src-dn>
								</or>
							</conditions>
							<actions>
								<do-set-op-property name="unmatched-src-dn">
									<arg-string>
										<token-unmatched-src-dn convert="true"/>
									</arg-string>
								</do-set-op-property>
							</actions>
						</rule>
						<rule>
							<description>veto out-of-scope events</description>
							<comment>When scoping by container, events outside of the Active Directory containers defined in the above rule will not have a unmatched-src-dn operational property and will be vetoed. If you do not want to use container based scoping, this rule should be modified or removed.</comment>
							<conditions>
								<and>
									<if-xpath op="not-true">$inScope=$OUmapAD</if-xpath>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
						<rule>
							<description>generate full name if not in Identity Vault</description>
							<comment xml:space="preserve">Full name policy: Generate a Full Name from Given Name + Surname if one does not already exist. The value is set in the Identity Vault and in the current operation to Active Directory. This policy assumes that Full Name synchronization is enabled in the subscriber filter. If you disable Full Name in the subscriber filter you should not use Full Name mapping.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">User</if-class-name>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
									<if-attr name="Full Name" op="not-available"/>
									<if-attr name="Given Name" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="gen-full-name">
									<arg-string>
										<token-attr name="Given Name"/>
										<token-text xml:space="preserve"> </token-text>
										<token-attr name="Surname"/>
									</arg-string>
								</do-set-local-variable>
								<do-set-src-attr-value name="Full Name">
									<arg-value>
										<token-xpath expression="normalize-space($gen-full-name)"/>
									</arg-value>
								</do-set-src-attr-value>
								<do-set-dest-attr-value name="Full Name">
									<arg-value>
										<token-xpath expression="normalize-space($gen-full-name)"/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>match users based on NT logon name</description>
							<comment xml:space="preserve">Logon name policy: Match object name from the Identity Vault to the NT logon name in Active Directory. Because sAMAccountName (DirXML-ADAliasName) is unique in the domain, objects are matched anywhere in the destination hierarchy, not just the relative position in the hierarchy.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">User</if-class-name>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">true</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="subtree">
									<arg-dn>
										<token-local-variable name="destDN"/>
									</arg-dn>
									<arg-match-attr name="DirXML-ADAliasName">
										<arg-value type="string">
											<token-replace-all regex="^a-zA-Z0-9\x21\x23-\x29\x2d\x2e\x40\x5e-\x60\x7b\x7d\x7e\xc0-\xf6\xf8-\xff\x410-\x44f" replace-with="">
												<token-src-name/>
											</token-replace-all>
										</arg-value>
									</arg-match-attr>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule>
							<description>match users based on full name</description>
							<comment xml:space="preserve">Full name policy: Match user objects in Active Directory whose object name matches the Identity Vault Full Name. Because objects names are only unique within a container, this rule only looks for objects in the same relative position in the hierarchy. This match is not performed if a matching object was found in a previous rule.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="equal">User</if-class-name>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
									<if-op-attr name="Full Name" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="entry">
									<arg-dn>
										<token-text xml:space="preserve">CN=</token-text>
										<token-escape-for-dest-dn>
											<token-attr name="Full Name"/>
										</token-escape-for-dest-dn>
										<token-replace-first regex="(.+)" replace-with="$1,">
											<token-parse-dn length="-2" src-dn-format="dest-dn">
												<token-op-property name="unmatched-src-dn"/>
											</token-parse-dn>
										</token-replace-first>
										<token-local-variable name="destDN"/>
									</arg-dn>
								</do-find-matching-object>
							</actions>
						</rule>
						<rule disabled="true">
							<description>match everything else</description>
							<comment xml:space="preserve">Match objects in Active Directory based on the object name and relative position in the hierarchy.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="not-equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-find-matching-object scope="entry">
									<arg-dn>
										<token-op-property name="unmatched-src-dn"/>
										<token-src-name/>
										<token-text xml:space="preserve">,</token-text>
										<token-text xml:space="preserve">OU=Users,OU=Quebec,DC=domain,DC=com</token-text>
									</arg-dn>
								</do-find-matching-object>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Creation">
					<policy>
						<rule>
							<description>Create User objects</description>
							<comment>Special processing for users. A DirXML-ADAliasName is generated which becomes the NT logon name (sAMAccountName) in Active Directory. Also, a default password is generated. If the user has a distribution password and you have enabled password sync, the distribution password will override the password generated here. The generated password passes the default Active Directory '3 of 4' rule by appending 'Dirxml1' to the password. You can make this more secure by using data that varies by user.</comment>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-veto-if-op-attr-not-available name="Full Name"/>
								<do-set-dest-attr-value name="DirXML-ADAliasName">
									<arg-value type="string">
										<token-substring length="20">
											<token-replace-all regex="^a-zA-Z0-9\x21\x23-\x29\x2d\x2e\x40\x5e-\x60\x7b\x7d\x7e\xc0-\xf6\xf8-\xff\x410-\x44f" replace-with="">
												<token-src-name/>
											</token-replace-all>
										</token-substring>
									</arg-value>
								</do-set-dest-attr-value>
								<do-add-src-attr-value class-name="User" name="Object Class">
									<arg-value>
										<token-text xml:space="preserve">DirXML-ApplicationAttrs
												</token-text>
									</arg-value>
								</do-add-src-attr-value>
								<do-set-src-attr-value name="DirXML-ADAliasName">
									<arg-value type="string">
										<token-substring length="20">
											<token-replace-all regex="^a-zA-Z0-9\x21\x23-\x29\x2d\x2e\x40\x5e-\x60\x7b\x7d\x7e\xc0-\xf6\xf8-\xff\x410-\x44f" replace-with="">
												<token-src-name/>
											</token-replace-all>
										</token-substring>
									</arg-value>
								</do-set-src-attr-value>
								<do-set-dest-password>
									<arg-string>
										<token-op-attr name="Surname"/>
										<token-text xml:space="preserve">Dirxml1</token-text>
									</arg-string>
								</do-set-dest-password>
							</actions>
						</rule>
						<rule>
							<description>map user name to Windows logon name</description>
							<comment>Windows logon name mapping: When userPrincipalName is configured to follow the eDirectory user name, set userPrincipalName to the eDirectory object name plus the name of the Active Directory domain.</comment>
							<conditions>
								<and>
									<if-global-variable name="UpnMap" op="equal">edir-name-auth</if-global-variable>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value class-name="User" name="userPrincipalName">
									<arg-value type="string">
										<token-src-name/>
										<token-text xml:space="preserve">@</token-text>
										<token-text xml:space="preserve">domain.com</token-text>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>Create Group objects</description>
							<comment>assign an NT group name to the group. by default this value is capped at 20 characters to meet mixed-mode domain requirements. this number can be increased if your domain functional level allows longer names.</comment>
							<conditions>
								<and>
									<if-class-name op="equal">Group</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-add-dest-attr-value name="DirXML-ADAliasName">
									<arg-value type="string">
										<token-substring length="20">
											<token-src-name/>
										</token-substring>
									</arg-value>
								</do-add-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>Identity Vault accounts are enabled if Login Disabled does not exist</description>
							<conditions>
								<and>
									<if-class-name mode="nocase" op="equal">User</if-class-name>
									<if-op-attr name="Login Disabled" op="not-available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="Login Disabled">
									<arg-value type="string">
										<token-text xml:space="preserve">false</token-text>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>default Exchange assignment</description>
							<comment>Provision Exchange mailbox</comment>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="ExchMailboxPolicy" op="equal">policy</if-global-variable>
									<if-class-name op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="homeMDB">
									<arg-value type="string">
										<token-global-variable name="exch-default-mdb"/>
									</arg-value>
								</do-set-dest-attr-value>
								<do-set-dest-attr-value name="mailNickname">
									<arg-value type="string">
										<token-substring length="20">
											<token-replace-all regex="[^a-zA-Z0-9\x21\x23-\x29\x2d\x2e\x40\x5e-\x60\x7b\x7d\x7e\xc0-\xf6\xf8-\xff\x410-\x44f]">
												<token-src-name/>
											</token-replace-all>
										</token-substring>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Placement">
					<policy>
						<rule>
							<description>Copy OUmapAD GCV into a local variable</description>
							<comment xml:space="preserve">Copy OUmapAD GCV into a local variable</comment>
							<conditions>
								<and>
									<if-class-name mode="nocase" op="equal">User</if-class-name>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="OUmapAD">
									<arg-node-set>
										<token-global-variable name="OUmapAD"/>
									</arg-node-set>
								</do-set-local-variable>
								<do-set-local-variable name="OUsource">
									<arg-string>
										<token-src-dn length="-2"/>
									</arg-string>
								</do-set-local-variable>
								<do-for-each>
									<arg-node-set>
										<token-local-variable name="OUmapAD"/>
									</arg-node-set>
									<arg-actions>
										<do-set-local-variable name="destDN">
											<arg-string>
												<token-xpath expression="concat($destDN,substring-before($current-node,concat('#',$OUsource)))"/>
											</arg-string>
										</do-set-local-variable>
									</arg-actions>
								</do-for-each>
								<do-set-local-variable name="inScope">
									<arg-string>
										<token-local-variable name="destDN"/>
										<token-text xml:space="preserve">#</token-text>
										<token-local-variable name="OUsource"/>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule>
							<description>placement for all objects</description>
							<comment>All objects are placed in the given container. By default the Active Directory scoping container and the subscriber placement container are the same. You can change the value here if you want to place objects in a different container than the one used for scoping. If you change the scoping rules in the matching rules of either the publisher or subscriber channel, you should also review and change this rule as needed.</comment>
							<conditions>
								<or/>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-src-dn convert="true" length="1" start="-1"/>
										<token-text xml:space="preserve">,</token-text>
										<token-local-variable name="destDN"/>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
						<rule>
							<description>Use Full Name for naming user objects</description>
							<comment>When User Full Name mapping is enabled, the destination object name is changed to the user's Full Name</comment>
							<conditions>
								<and>
									<if-class-name op="equal">User</if-class-name>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-set-op-dest-dn>
									<arg-dn>
										<token-text xml:space="preserve">CN=</token-text>
										<token-escape-for-dest-dn>
											<token-attr name="Full Name"/>
										</token-escape-for-dest-dn>
										<token-text xml:space="preserve">,</token-text>
										<token-dest-dn length="-2"/>
									</arg-dn>
								</do-set-op-dest-dn>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Command" next-transform="UserNameMap.Subscriber.Active Directory.Driver Set.null">
					<policy>
						<rule>
							<description>default Exchange assignment</description>
							<comment xml:space="preserve">Provision Exchange during merge operations. Skip provisioning if the Active Directory user is already mail enabled (e-mail contact only) or mailbox enabled (e-mail user account)</comment>
							<conditions>
								<and>
									<if-global-variable mode="nocase" name="ExchMailboxPolicy" op="equal">policy</if-global-variable>
									<if-operation op="equal">modify</if-operation>
									<if-xpath op="true">@from-merge='true'</if-xpath>
									<if-dest-attr name="homeMDB" op="not-available"/>
									<if-dest-attr name="mailNickName" op="not-available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="homeMDB">
									<arg-value type="string">
										<token-global-variable name="exch-default-mdb"/>
									</arg-value>
								</do-set-dest-attr-value>
								<do-set-dest-attr-value name="mailNickname">
									<arg-value type="string">
										<token-substring length="20">
											<token-replace-all regex="[^a-zA-Z0-9\x21\x23-\x29\x2d\x2e\x40\x5e-\x60\x7b\x7d\x7e\xc0-\xf6\xf8-\xff\x410-\x44f]">
												<token-src-name/>
											</token-replace-all>
										</token-substring>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="UserNameMap" next-transform="Password(Sub)-Transform Distribution Password.Subscriber.Active Directory.Driver Set.null">
					<policy>
						<description>A set of rules that are executed when any one of the user name mapping options are selected.</description>
						<rule>
							<description>consider user objects when name mapping is enabled</description>
							<comment xml:space="preserve">Skip processing if event is not of interest to name mapping policy.</comment>
							<conditions>
								<and>
									<if-class-name mode="case" op="not-equal">User</if-class-name>
								</and>
								<and>
									<if-global-variable mode="case" name="FullNameMap" op="equal">false</if-global-variable>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">false</if-global-variable>
									<if-global-variable mode="case" name="UpnMap" op="equal">none</if-global-variable>
								</and>
							</conditions>
							<actions>
								<do-break/>
							</actions>
						</rule>
						<rule>
							<description>generate full name on merge</description>
							<comment xml:space="preserve">Full name policy: This policy option requires a Full Name in the Identity Vault to be used as the object name in Active Directory. If one is not present during a merge operation, generate it by concatenating Given Name (if present) with Surname.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
									<if-xpath op="true">.[@from-merge='true']</if-xpath>
									<if-attr name="Full Name" op="not-available"/>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="gen-full-name">
									<arg-string>
										<token-escape-for-dest-dn>
											<token-src-attr name="Given Name"/>
											<token-text xml:space="preserve"> </token-text>
											<token-src-attr name="Surname"/>
										</token-escape-for-dest-dn>
									</arg-string>
								</do-set-local-variable>
								<do-set-local-variable name="gen-full-name-normalized">
									<arg-string>
										<token-xpath expression="normalize-space($gen-full-name)"/>
									</arg-string>
								</do-set-local-variable>
								<do-add-src-attr-value name="Full Name">
									<arg-value>
										<token-local-variable name="gen-full-name-normalized"/>
									</arg-value>
								</do-add-src-attr-value>
								<do-set-dest-attr-value name="Full Name">
									<arg-value>
										<token-local-variable name="gen-full-name-normalized"/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>map full name to destination object name</description>
							<comment xml:space="preserve">Full name policy: Keep destination object name in sync when Full Name changes.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
									<if-operation op="equal">modify</if-operation>
									<if-op-attr name="Full Name" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-rename-dest-object when="after">
									<arg-string>
										<token-escape-for-dest-dn>
											<token-op-attr name="Full Name"/>
										</token-escape-for-dest-dn>
									</arg-string>
								</do-rename-dest-object>
							</actions>
						</rule>
						<rule>
							<description>escape source object name</description>
							<comment xml:space="preserve">Logon name policy: Remove characters unsuitable for Active Directory logon name from source object name.</comment>
							<conditions>
								<and>
									<if-operation op="equal">rename</if-operation>
								</and>
							</conditions>
							<actions>
								<do-set-local-variable name="object-name">
									<arg-string>
										<token-replace-all regex="^a-zA-Z0-9\x21\x23-\x29\x2d\x2e\x40\x5e-\x60\x7b\x7d\x7e\xc0-\xf6\xf8-\xff\x410-\x44f" replace-with="">
											<token-src-name/>
										</token-replace-all>
									</arg-string>
								</do-set-local-variable>
							</actions>
						</rule>
						<rule>
							<description>map rename to NT logon name</description>
							<comment xml:space="preserve">Logon name policy: Keep destination sAMAccountName in sync with source object name.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="LogonNameMap" op="equal">true</if-global-variable>
									<if-operation op="equal">rename</if-operation>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="DirXML-ADAliasName">
									<arg-value>
										<token-substring length="20">
											<token-local-variable name="object-name"/>
										</token-substring>
									</arg-value>
								</do-set-dest-attr-value>
								<do-set-src-attr-value name="DirXML-ADAliasName">
									<arg-value>
										<token-local-variable name="object-name"/>
									</arg-value>
								</do-set-src-attr-value>
							</actions>
						</rule>
						<rule>
							<description>map rename to Active Directory logon name</description>
							<comment xml:space="preserve">Active Directory logon name  (userPrincipalName) policy: keep destination userPrincipalName in sync with source object name.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="UpnMap" op="equal">edir-name-auth</if-global-variable>
									<if-operation op="equal">rename</if-operation>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="userPrincipalName">
									<arg-value>
										<token-local-variable name="object-name"/>
										<token-text>@</token-text>
										<token-text xml:space="preserve">domain.com</token-text>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>map e-mail address to Active Directory logon name</description>
							<comment>Active Directory logon name (userPrincipalName) policy</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="UpnMap" op="equal">edir-mail-auth</if-global-variable>
									<if-op-attr name="Internet EMail Address" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="userPrincipalName">
									<arg-value>
										<token-attr name="Internet EMail Address"/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>unmap e-mail address from Active Directory logon name</description>
							<comment>Active Directory logon name (userPrincipalName) policy</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="UpnMap" op="equal">edir-mail-auth</if-global-variable>
									<if-op-attr mode="regex" name="Internet EMail Address" op="changing-from">.+</if-op-attr>
								</and>
							</conditions>
							<actions>
								<do-remove-dest-attr-value class-name="User" name="userPrincipalName">
									<arg-value>
										<token-op-attr name="Internet EMail Address"/>
									</arg-value>
								</do-remove-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>map e-mail address to Active Directory logon name on merge</description>
							<conditions>
								<and>
									<if-global-variable mode="case" name="UpnMap" op="equal">edir-mail-auth</if-global-variable>
									<if-xpath op="true">.[@from-merge='true']</if-xpath>
									<if-op-attr name="Internet EMail Address" op="not-available"/>
									<if-src-attr name="Internet EMail Address" op="available"/>
								</and>
							</conditions>
							<actions>
								<do-set-dest-attr-value name="userPrincipalName">
									<arg-value>
										<token-src-attr name="Internet EMail Address"/>
									</arg-value>
								</do-set-dest-attr-value>
							</actions>
						</rule>
						<rule>
							<description>unmap e-mail address from Active Directory logon name on merge</description>
							<conditions>
								<and>
									<if-global-variable mode="case" name="UpnMap" op="equal">edir-mail-auth</if-global-variable>
									<if-xpath op="true">.[@from-merge='true']</if-xpath>
									<if-op-attr name="Internet EMail Address" op="not-available"/>
									<if-src-attr name="Internet EMail Address" op="not-available"/>
								</and>
							</conditions>
							<actions>
								<do-clear-dest-attr-value name="userPrincipalName"/>
							</actions>
						</rule>
						<rule>
							<description>discard unwanted renames</description>
							<comment xml:space="preserve">When mapping Full Name, the original rename is vetoed after all rename-triggered policy completes.</comment>
							<conditions>
								<and>
									<if-global-variable mode="case" name="FullNameMap" op="equal">true</if-global-variable>
									<if-operation op="equal">rename</if-operation>
								</and>
							</conditions>
							<actions>
								<do-veto/>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Sub)-Transform Distribution Password" next-transform="Password(Sub)-Default Password Policy.Subscriber.Active Directory.Driver Set.null">
					<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="Password(Sub)-Default Password Policy" next-transform="Password(Sub)-Check Password GCV.Subscriber.Active Directory.Driver Set.null">
					<policy>
						<!-- subscriber command policy -->
						<rule>
							<description>On User add, provide default password of Surname if no password 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-op-attr name="Surname"/>
									</arg-string>
								</do-set-dest-password>
							</actions>
						</rule>
					</policy>
				</rule>
				<rule name="Password(Sub)-Check Password GCV" next-transform="Password(Sub)-Add Password Payload.Subscriber.Active Directory.Driver Set.null">
					<policy>
						<!-- subscriber command 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)-Add Password Payload">
					<policy>
						<description>Payloads for subscribe to password changes</description>
						<rule>
							<description>Add operation-data element to password subscribe 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 subscribe 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>
			</children>
		</subscriber>
		<rule name="InputTransform" next-transform="Password(Pub)-Sub Email Notifications.Active Directory.Driver Set.null">
			<policy xmlns:jadutil="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.ad.util.Utilities">
				<description>Convert selected attributes to a form most commonly used in the Identity Vault.</description>
				<rule>
					<description>streetAddress: Convert CR-LF to LF</description>
					<comment xml:space="preserve">The Identity Vault Street Address typically uses the Unix end-of-line convention (a single new line character) while Active Directory uses the Windows convention (carriage return plus new line characters). This rule converts values to the Identity Vault format so that the synchronized values display properly in both systems.</comment>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="streetAddress">
							<arg-value type="string">
								<token-replace-all regex="\r\n" replace-with="\r">
									<token-local-variable name="current-value"/>
								</token-replace-all>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>logonHours: Convert to Login Allowed Time Map form</description>
					<comment xml:space="preserve">The Identity Vault Login Allowed Time Map is an octet string holding one bit for each half-hour period in a week. Users can logon when the bit representing the current half-hour is a 1.  The Active Directory logonHours works similarly except that there is one bit for each 1 hour period in a week. This rule converts to the Login Allowed Time Map format.</comment>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="logonHours">
							<arg-value type="octet">
								<token-xpath expression="jadutil:translateTimeMap2eDir($current-value)"/>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>accountExpires: Convert to Identity Vault time format</description>
					<comment xml:space="preserve">The Identity Vault uses a 32 bit value to store certain time values while Active Directory uses a 64 bit time value. Reformat the 64 bit value to fit within the vault's 32 bit syntax.</comment>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="accountExpires">
							<arg-value type="time">
								<token-xpath expression="jadutil:translateFileTime2Epoch($current-value)"/>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>lockoutTime: Convert to Identity Vault time format</description>
					<comment xml:space="preserve">The Identity Vault uses a 32 bit value to store certain time values while Active Directory uses a 64 bit time value. Reformat the 64 bit value to fit within the vault's 32 bit syntax.</comment>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="lockoutTime">
							<arg-value type="time">
								<token-xpath expression="jadutil:translateFileTime2Epoch($current-value)"/>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
			</policy>
		</rule>
		<rule name="Password(Pub)-Sub Email Notifications">
			<policy>
				<description>Email notifications for failed password subscriptions</description>
				<rule>
					<description>Send e-mail on a failure when subscribing to passwords</description>
					<conditions>
						<and>
							<if-global-variable mode="nocase" name="notify-user-on-password-dist-failure" op="equal">true</if-global-variable>
							<if-operation op="equal">status</if-operation>
							<if-xpath op="true">self::status[@level != 'success'][text() != '']/operation-data/password-subscribe-status/association[text() != '']</if-xpath>
						</and>
					</conditions>
					<actions>
						<do-send-email-from-template notification-dn="cn=security\cn=Default Notification Collection" template-dn="cn=security\cn=Default Notification Collection\cn=Password Set Fail">
							<arg-string name="UserFullName">
								<token-dest-attr name="Full Name">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-subscribe-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
							<arg-string name="UserGivenName">
								<token-dest-attr name="Given Name">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-subscribe-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
							<arg-string name="UserLastName">
								<token-dest-attr name="Surname">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-subscribe-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
							<arg-string name="ConnectedSystemName">
								<token-global-variable name="ConnectedSystemName"/>
							</arg-string>
							<arg-string name="FailureReason">
								<token-text/>
								<token-xpath expression="self::status/child::text()"/>
							</arg-string>
							<arg-string name="to">
								<token-dest-attr name="Internet EMail Address">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-subscribe-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
						</do-send-email-from-template>
					</actions>
				</rule>
				<rule>
					<description>Send e-mail on failure to reset connected system password using the Identity Manager data store password</description>
					<conditions>
						<and>
							<if-global-variable mode="nocase" name="notify-user-on-password-dist-failure" op="equal">true</if-global-variable>
							<if-operation op="equal">status</if-operation>
							<if-xpath op="true">self::status[@level != 'success']/operation-data/password-reset-status</if-xpath>
						</and>
					</conditions>
					<actions>
						<do-send-email-from-template notification-dn="cn=security\cn=Default Notification Collection" template-dn="cn=security\cn=Default Notification Collection\cn=Password Reset Fail">
							<arg-string name="UserFullName">
								<token-dest-attr name="Full Name">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-reset-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
							<arg-string name="UserGivenName">
								<token-dest-attr name="Given Name">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-reset-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
							<arg-string name="UserLastName">
								<token-dest-attr name="Surname">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-reset-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
							<arg-string name="ConnectedSystemName">
								<token-global-variable name="ConnectedSystemName"/>
							</arg-string>
							<arg-string name="FailureReason">
								<token-text/>
								<token-xpath expression="self::status/child::text()"/>
							</arg-string>
							<arg-string name="to">
								<token-dest-attr name="Internet EMail Address">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-reset-status/association"/>
									</arg-association>
								</token-dest-attr>
							</arg-string>
						</do-send-email-from-template>
					</actions>
				</rule>
			</policy>
		</rule>
		<rule name="OutputTransform" next-transform="Password(Sub)-Pub Email Notifications.Active Directory.Driver Set.null">
			<policy xmlns:jadutil="http://www.novell.com/nxsl/java/com.novell.nds.dirxml.driver.ad.util.Utilities">
				<description>Convert selected attributes to a form most commonly used in Active Directory.</description>
				<rule>
					<description>Street Address: Convert LF to CR-LF</description>
					<comment xml:space="preserve">The Identity Vault Street Address typically uses the Unix end-of-line convention (a single new line character) while Active Directory uses the Windows convention (carriage return plus new line characters). This rule converts values to the Windows format so that the synchronized values display properly in both systems.</comment>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="streetAddress">
							<arg-value>
								<token-replace-all regex="[^\r]\n" replace-with="\r\n">
									<token-local-variable name="current-value"/>
								</token-replace-all>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>logonHours: Convert to Active Directory form</description>
					<comment xml:space="preserve">The Identity Vault Login Allowed Time Map is an octet string holding one bit for each half-hour period in a week. Users can logon when the bit representing the current half-hour is a 1.  The Active Directory logonHours works similarly except that there is one bit for each 1 hour period in a week. This rule converts to the logonHours format. Logon is allowed for any 1 hour period in Active Directory if logon is allowed in the Identity Vault for at least one of the two 1/2 hour periods. Use jadutil:translateTimMap2ADStrict for a conversion policy where logon is granted in Active Directory only if both 1/2 hour periods allow logon in the Identity Vault. Although this is a subscriber policy it can effect the Identity Vault. If the Active Directory value is synchronized back to the Identity Vault, the 1/2 hour granularity in the vault is lost.</comment>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="logonHours">
							<arg-value type="octet">
								<token-xpath expression="jadutil:translateTimeMap2ADLenient($current-value)"/>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>accountExpires: Convert to Active Directory form</description>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="accountExpires">
							<arg-value type="octet">
								<token-xpath expression="jadutil:translateEpoch2FileTime($current-value)"/>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>lockoutTime: Convert to Active Directory form</description>
					<conditions>
						<and/>
					</conditions>
					<actions>
						<do-reformat-op-attr name="lockoutTime">
							<arg-value type="octet">
								<token-xpath expression="jadutil:translateEpoch2FileTime($current-value)"/>
							</arg-value>
						</do-reformat-op-attr>
					</actions>
				</rule>
				<rule>
					<description>Add: User - convert multi-valued Telephone to single value</description>
					<conditions>
						<and>
							<if-operation op="equal">add</if-operation>
							<if-class-name op="equal">User</if-class-name>
							<if-op-attr name="telephoneNumber" op="available"/>
						</and>
					</conditions>
					<actions>
						<do-set-local-variable name="phone-number">
							<arg-string>
								<token-xpath expression="./add-attr[@attr-name='telephoneNumber']/value[1]"/>
							</arg-string>
						</do-set-local-variable>
						<do-strip-op-attr name="telephoneNumber"/>
						<do-set-dest-attr-value name="telephoneNumber">
							<arg-value type="string">
								<token-local-variable name="phone-number"/>
							</arg-value>
						</do-set-dest-attr-value>
					</actions>
				</rule>
				<rule>
					<description>update Active Directory logon name</description>
					<comment xml:space="preserve">When Active Directory logon name  (userPrincipalName) is set to follow the Active Directory e-mail address, changes to the e-mail address are set as an operational property and are acted on when the overall operation succeeds.</comment>
					<conditions>
						<and>
							<if-xpath op="true">self::status[@level = 'success']/operation-data/windows-2000-logon-name</if-xpath>
						</and>
					</conditions>
					<actions>
						<do-set-dest-attr-value name="userPrincipalName">
							<arg-value>
								<token-op-property name="windows-2000-logon-name"/>
							</arg-value>
						</do-set-dest-attr-value>
					</actions>
				</rule>
			</policy>
		</rule>
		<rule name="Password(Sub)-Pub Email Notifications">
			<policy>
				<description>Email notifications for failed password publications</description>
				<rule>
					<description>Send e-mail for a failed publish password operation</description>
					<conditions>
						<and>
							<if-global-variable mode="nocase" name="notify-user-on-password-dist-failure" op="equal">true</if-global-variable>
							<if-operation op="equal">status</if-operation>
							<if-xpath op="true">self::status[@level != 'success']/operation-data/password-publish-status</if-xpath>
						</and>
					</conditions>
					<actions>
						<!-- generate email notification -->
						<do-send-email-from-template notification-dn="cn=security\cn=Default Notification Collection" template-dn="cn=security\cn=Default Notification Collection\cn=Password Sync Fail">
							<arg-string name="UserFullName">
								<token-src-attr name="Full Name">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-publish-status/association"/>
									</arg-association>
								</token-src-attr>
							</arg-string>
							<arg-string name="UserGivenName">
								<token-src-attr name="Given Name">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-publish-status/association"/>
									</arg-association>
								</token-src-attr>
							</arg-string>
							<arg-string name="UserLastName">
								<token-src-attr name="Surname">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-publish-status/association"/>
									</arg-association>
								</token-src-attr>
							</arg-string>
							<arg-string name="ConnectedSystemName">
								<token-global-variable name="ConnectedSystemName"/>
							</arg-string>
							<arg-string name="to">
								<token-src-attr name="Internet EMail Address">
									<arg-association>
										<token-xpath expression="self::status/operation-data/password-publish-status/association"/>
									</arg-association>
								</token-src-attr>
							</arg-string>
							<arg-string name="FailureReason">
								<token-text/>
								<token-xpath expression="self::status/child::text()"/>
							</arg-string>
						</do-send-email-from-template>
					</actions>
				</rule>
			</policy>
		</rule>
		<rule name="SchemaMapping">
			<attr-name-map>
				<class-name>
					<nds-name>User</nds-name>
					<app-name>user</app-name>
				</class-name>
				<attr-name class-name="User">
					<nds-name>DirXML-ADAliasName</nds-name>
					<app-name>sAMAccountName</app-name>
				</attr-name>
				<class-name>
					<nds-name>Group</nds-name>
					<app-name>group</app-name>
				</class-name>
				<attr-name class-name="Group">
					<nds-name>DirXML-ADAliasName</nds-name>
					<app-name>sAMAccountName</app-name>
				</attr-name>
				<class-name>
					<nds-name>Organizational Unit</nds-name>
					<app-name>organizationalUnit</app-name>
				</class-name>
				<class-name>
					<nds-name>Organization</nds-name>
					<app-name>organization</app-name>
				</class-name>
				<class-name>
					<nds-name>Locality</nds-name>
					<app-name>locality</app-name>
				</class-name>
				<attr-name>
					<nds-name>CN</nds-name>
					<app-name>cn</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Description</nds-name>
					<app-name>description</app-name>
				</attr-name>
				<attr-name>
					<nds-name>DirXML-EntitlementRef</nds-name>
					<app-name>DirXML-EntitlementRef</app-name>
				</attr-name>
				<attr-name>
					<nds-name>DirXML-EntitlementResult</nds-name>
					<app-name>DirXML-EntitlementResult</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Facsimile Telephone Number</nds-name>
					<app-name>facsimileTelephoneNumber</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Full Name</nds-name>
					<app-name>displayName</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Given Name</nds-name>
					<app-name>givenName</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Group Membership</nds-name>
					<app-name>memberOf</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Initials</nds-name>
					<app-name>initials</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Internet EMail Address</nds-name>
					<app-name>mail</app-name>
				</attr-name>
				<attr-name>
					<nds-name>L</nds-name>
					<app-name>physicalDeliveryOfficeName</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Login Allowed Time Map</nds-name>
					<app-name>logonHours</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Login Disabled</nds-name>
					<app-name>dirxml-uACAccountDisable</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Login Expiration Time</nds-name>
					<app-name>accountExpires</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Login Intruder Reset Time</nds-name>
					<app-name>lockoutTime</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Member</nds-name>
					<app-name>member</app-name>
				</attr-name>
				<attr-name>
					<nds-name>OU</nds-name>
					<app-name>ou</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Owner</nds-name>
					<app-name>managedBy</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Physical Delivery Office Name</nds-name>
					<app-name>l</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Postal Code</nds-name>
					<app-name>postalCode</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Postal Office Box</nds-name>
					<app-name>postOfficeBox</app-name>
				</attr-name>
				<attr-name>
					<nds-name>S</nds-name>
					<app-name>st</app-name>
				</attr-name>
				<attr-name>
					<nds-name>SA</nds-name>
					<app-name>streetAddress</app-name>
				</attr-name>
				<attr-name>
					<nds-name>See Also</nds-name>
					<app-name>seeAlso</app-name>
				</attr-name>
				<attr-name>
					<nds-name>DirXML-SPEntitlements</nds-name>
					<app-name>DirXML-SPEntitlements</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Surname</nds-name>
					<app-name>sn</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Telephone Number</nds-name>
					<app-name>telephoneNumber</app-name>
				</attr-name>
				<attr-name>
					<nds-name>Title</nds-name>
					<app-name>title</app-name>
				</attr-name>
				<attr-name class-name="User">
					<nds-name>nspmDistributionPassword</nds-name>
					<app-name>nspmDistributionPassword</app-name>
				</attr-name>
			</attr-name-map>
		</rule>
	</children>
</driver-configuration>