!!! Overview We show a [DirXML Example] of the [Modify-association] token taken from a "Real-Life" condition. !! Scenario Client uses a self generated printable [UUID] as nwGUID to track the entries across the enterprise. Normally the nwGUID values would not change, however, there was a business case put forward when there was a need for some entries to be changed. The Modify-association] token is documented, but not exposed in [Designer] or [Imanager]. We [found an example|https://forums.netiq.com/showthread.php?616-Associations-in-JDBC-driver|target='_blank'] and made some minor modifications to fit the client. If you read the description for the [Modify-association] token it is only recognized by the [DirXML Engine]. So the [Modify-association] token must be sent on the [Publisher Channel] to the engine. As in our case, all of the logic in the driver took place on the Subscriber, we needed a method to !! OTP Code for Rule: %%prettify {{{ <rule> <description>Check for Modify Association Data on Success</description> <comment xml:space="preserve">Works with "OTP:Catch Association Changes". We clone the operational data into the Publisher channel and send it to the Engine when will then properly update the Association Values</comment> <comment name="author" xml:space="preserve">jim@willeke.com </comment> <comment name="version" xml:space="preserve">1</comment> <comment name="lastchanged" xml:space="preserve">2014-09-08</comment> <conditions> <and> <if-operation mode="case" op="equal">status</if-operation> <if-xml-attr mode="nocase" name="level" op="equal">success</if-xml-attr> <if-xpath op="true">operation-data/modify-association</if-xpath> </and> </conditions> <actions> <do-clone-xpath dest-expression=".." src-expression="operation-data/modify-association"/> </actions> </rule> }}} /% Trace: %%prettify {{{ [09/08/14 09:12:11.375]:bld ST:Applying output transformation policies. [09/08/14 09:12:11.376]:bld ST:Applying policy: %+C%14CCatch Association Changes%-C. [09/08/14 09:12:11.376]:bld ST: Applying to modify #1. [09/08/14 09:12:11.376]:bld ST: Evaluating selection criteria for rule 'Detect Modify Assoc'. [09/08/14 09:12:11.377]:bld ST: (if-operation equal "modify") = TRUE. [09/08/14 09:12:11.377]:bld ST: (if-class-name equal "User") = TRUE. [09/08/14 09:12:11.377]:bld ST: (if-op-attr 'nwGUID' changing-to ".+") = TRUE. [09/08/14 09:12:11.378]:bld ST: Rule selected. [09/08/14 09:12:11.378]:bld ST: Applying rule 'Detect Modify Assoc'. [09/08/14 09:12:11.378]:bld ST: Action: do-append-xml-element("operation-data","."). [09/08/14 09:12:11.379]:bld ST: Action: do-append-xml-element("modify-association","operation-data"). [09/08/14 09:12:11.379]:bld ST: Action: do-append-xml-element("association","operation-data/modify-association[last()]"). [09/08/14 09:12:11.380]:bld ST: Action: do-append-xml-text("operation-data/modify-association[last()]/association",token-association()). [09/08/14 09:12:11.380]:bld ST: arg-string(token-association()) [09/08/14 09:12:11.381]:bld ST: token-association() [09/08/14 09:12:11.381]:bld ST: Token Value: "b6d951dc-3759-11e4-8dd8-b7f13fbde3c8". [09/08/14 09:12:11.381]:bld ST: Arg Value: "b6d951dc-3759-11e4-8dd8-b7f13fbde3c8". [09/08/14 09:12:11.382]:bld ST: Action: do-append-xml-element("association","operation-data/modify-association[last()]"). [09/08/14 09:12:11.382]:bld ST: Action: do-append-xml-text("operation-data/modify-association[last()]/association[last()]",token-op-attr("nwGUID")). [09/08/14 09:12:11.383]:bld ST: arg-string(token-op-attr("nwGUID")) [09/08/14 09:12:11.383]:bld ST: token-op-attr("nwGUID") [09/08/14 09:12:11.384]:bld ST: Token Value: "b8eb900d-3759-11e4-8dd8-b7f13fbde3c8". [09/08/14 09:12:11.384]:bld ST: Arg Value: "b8eb900d-3759-11e4-8dd8-b7f13fbde3c8". [09/08/14 09:12:11.384]:bld ST:Policy returned: [09/08/14 09:12:11.385]:bld ST: <nds dtdversion="4.0" ndsversion="8.x"> <source> <product edition="Standard" version="4.0.2.1">DirXML</product> <contact>Novell, Inc.</contact> </source> <input> <modify cached-time="20140908131211.096Z" class-name="User" event-id="PIDV07#20140908131211#10#1:a2647ca7-dce2-4221-598c-a77c64a2e2dc" qualified-src-dn="dc=pilot\dc=willeke\OU=people\OU=Ext\OU=B2B\OU=sales\uniqueID=johnj41" src-dn="\NWPILOT\pilot\willeke\people\Ext\B2B\sales\johnj41" src-entry-id="255228" timestamp="1410181926#2"> <association state="associated">b6d951dc-3759-11e4-8dd8-b7f13fbde3c8</association> <modify-attr attr-name="nwGUID"> <remove-value> <value timestamp="1410181919#34" type="string">b6d951dc-3759-11e4-8dd8-b7f13fbde3c8</value> </remove-value> <add-value> <value timestamp="1410181926#2" type="string">b8eb900d-3759-11e4-8dd8-b7f13fbde3c8</value> </add-value> </modify-attr> <operation-data> <modify-association> <association>b6d951dc-3759-11e4-8dd8-b7f13fbde3c8</association> <association>b8eb900d-3759-11e4-8dd8-b7f13fbde3c8</association> </modify-association> </operation-data> </modify> </input> </nds> }}} /% ! ITP Code for Rule: %%prettify {{{ <rule> <description>UpdateAssoc on Success</description> <comment xml:space="preserve">Works with OTP Catch Association Changes</comment> <comment name="author" xml:space="preserve">jim@willeke.com </comment> <comment name="version" xml:space="preserve">1</comment> <comment name="lastchanged" xml:space="preserve">2014-09-08</comment> <conditions> <and> <if-operation mode="case" op="equal">status</if-operation> <if-xml-attr mode="nocase" name="level" op="equal">success</if-xml-attr> <if-xpath op="true">operation-data/modify-association</if-xpath> </and> </conditions> <actions> <do-clone-xpath dest-expression=".." src-expression="operation-data/modify-association"/> </actions> </rule> }}} /% %%prettify {{{ [09/08/14 09:12:11.450]:bld ST:Applying policy: %+C%14CModify-Association%-C. [09/08/14 09:12:11.450]:bld ST: Applying to status #1. [09/08/14 09:12:11.450]:bld ST: Evaluating selection criteria for rule 'UpdateAssoc on Success'. [09/08/14 09:12:11.451]:bld ST: (if-operation equal "status") = TRUE. [09/08/14 09:12:11.451]:bld ST: (if-xml-attr 'level' equal "success") = TRUE. [09/08/14 09:12:11.452]:bld ST: (if-xpath true "operation-data/modify-association") = TRUE. [09/08/14 09:12:11.452]:bld ST: Rule selected. [09/08/14 09:12:11.452]:bld ST: Applying rule 'UpdateAssoc on Success'. [09/08/14 09:12:11.453]:bld ST: Action: do-clone-xpath(dest-expression="..",src-expression="operation-data/modify-association"). [09/08/14 09:12:11.453]:bld ST:Policy returned: [09/08/14 09:12:11.454]:bld ST: <nds dtdversion="4.0" ndsversion="8.x"> <source> <product edition="Standard" version="4.0.2.1">DirXML</product> <contact>Novell, Inc.</contact> </source> <output> <status event-id="PIDV07#20140908131211#10#1:a2647ca7-dce2-4221-598c-a77c64a2e2dc" level="success"><application>DirXML</application> <module>BLD</module> <object-dn>\NWPILOT\pilot\willeke\people\Ext\B2B\sales\johnj41 (pilot\willeke\people\Ext\B2B\sales\johnj41)</object-dn> <component>Publisher</component> <operation-data> <modify-association> <association>b6d951dc-3759-11e4-8dd8-b7f13fbde3c8</association> <association>b8eb900d-3759-11e4-8dd8-b7f13fbde3c8</association> </modify-association> </operation-data> </status> <modify-association> <association>b6d951dc-3759-11e4-8dd8-b7f13fbde3c8</association> <association>b8eb900d-3759-11e4-8dd8-b7f13fbde3c8</association> </modify-association> </output> </nds> [09/08/14 09:12:11.459]:bld ST:No schema mapping policies. [09/08/14 09:12:11.459]:bld ST:Resolving association references. [09/08/14 09:12:11.459]:bld ST:Processing returned document. [09/08/14 09:12:11.460]:bld ST:Processing operation <status> for . [09/08/14 09:12:11.460]:bld ST: DirXML Log Event ------------------- Driver: \NWPILOT\pilot\willeke\esc\DirXML\NWDriverSet\BLD Channel: Subscriber Object: \NWPILOT\pilot\willeke\people\Ext\B2B\sales\johnj41 Status: Success Message: <application>DirXML</application> <module>BLD</module> <object-dn>\NWPILOT\pilot\willeke\people\Ext\B2B\sales\johnj41 (pilot\willeke\people\Ext\B2B\sales\johnj41)</object-dn> <component>Publisher</component> [09/08/14 09:12:11.462]:bld ST:Processing operation <modify-association> for . [09/08/14 09:12:11.467]:bld ST:End transaction. }}} /% !! More Information There might be more information for this subject on one of the following: [{ReferringPagesPlugin before='*' after='\n' }]