I have a work order driver effectively deleting my "inactive positions" from
my users at specified times. The problem is, my logic works when there is
ONE position.

I get nailed/failure when there are multiple positions on a user but only
one has an end date.
I need to modify my logic to weed out the "still active" positions, before I
run the test to see if the attribute is changing, AND, if more than one
position is getting an end date simultaneously, I need to have the Work
Order logic affect all of the expiring positions. A for-each loop, perhaps?

Fr. Ramon, any suggestions/samples for limiting the set of data that gets
processed when it's a multi-valued attribute? You provided something
similar re: group associations in an AD Driver, but after banging my head on
trying to modify that, I have to ask if this is not significantly
different...

In the snippet below, you'll see that a single modification to a user's
position results in a synthetic add at the Work Order driver, bringing all
four positions through for consideration. The logic for building the Work
Orders is in the Sub-command Transform.

Thanks in advance for any help over this hurdle!

Rob.
============

<nds dtdversion="3.5" ndsversion="8.x">
<source>
<product version="3.5.10.20070918 ">DirXML</product>
<contact>Novell, Inc.</contact>
</source>
<input>
<modify cached-time="20071029235922.281Z" class-name="User"
event-id="DEV-IDV-03-DS#20071029235922#2#1"
qualified-src-dn="O=data\OU=usr\OU=edu\CN=BarnicDe"
src-dn="\DEV-ClientIDV\data\usr\edu\BarnicDe" src-entry-id="40225"
timestamp="1193702357#5">
<modify-attr attr-name="ClientPosition">
<remove-value>
<value timestamp="1193702148#1" type="string">20|9993|90102
|999390102|07/01/2007|</value>
</remove-value>
<add-value>
<value timestamp="1193702357#5" type="string">20|9993|90102
|999390102|07/01/2007|10/28/2007</value>
</add-value>
</modify-attr>
</modify>
</input>
</nds>
[10/29/07 19:59:22.377]:!!! ST:No event transformation policies.
[10/29/07 19:59:22.377]:!!! ST:Subscriber processing modify for
\DEV-ClientIDV\data\usr\edu\BarnicDe.
[10/29/07 19:59:22.377]:!!! ST:Converting <modify> to <add>
[10/29/07 19:59:22.378]:!!! ST:Reading relevant attributes from
\DEV-ClientIDV\data\usr\edu\BarnicDe.
[10/29/07 19:59:22.378]:!!! ST:
<nds dtdversion="3.5" ndsversion="8.x">
<source>
<product version="3.5.10.20070918 ">DirXML</product>
<contact>Novell, Inc.</contact>
</source>
<input>
<query class-name="User" dest-dn="\DEV-ClientIDV\data\usr\edu\BarnicDe"
dest-entry-id="40225" scope="entry">
<read-attr attr-name="ClientPosition"/>
</query>
</input>
</nds>
[10/29/07 19:59:22.380]:!!! ST:Pumping XDS to eDirectory.
[10/29/07 19:59:22.380]:!!! ST:Performing operation query for
\DEV-ClientIDV\data\usr\edu\BarnicDe.
[10/29/07 19:59:22.382]:!!! ST:Read result:
[10/29/07 19:59:22.382]:!!! ST:
<nds dtdversion="3.5" ndsversion="8.x">
<source>
<product version="3.5.10.20070918 ">DirXML</product>
<contact>Novell, Inc.</contact>
</source>
<output>
<instance class-name="User"
qualified-src-dn="O=data\OU=usr\OU=edu\CN=BarnicDe"
src-dn="\DEV-ClientIDV\data\usr\edu\BarnicDe" src-entry-id="40225">
<attr attr-name="ClientPosition">
<value timestamp="1193702148#2" type="string">21|9993|90103
|999390103|07/01/2007|</value>
<value timestamp="1193702148#3" type="string">22|9993|90104
|999390104|07/01/2007|</value>
<value timestamp="1193702148#4" type="string">91|9991|90001
|999190001|07/01/2007|</value>
<value timestamp="1193702357#5" type="string">20|9993|90102
|999390102|07/01/2007|10/28/2007</value>
</attr>
</instance>
<status level="success"></status>
</output>
</nds>

[SNIP --- Deleting intervening, non-impactful trace material... I need the
following to evaluate for true on each position that has an end date, and
then apply all of my current actions to each value changing. I am not
including the actions, as I think that will simply be a cut and paste. The
actions create a work order with a due date = to the end date specified at
the end of the ClientPosition attribute.] Since it evaluates false below, I
get no WO created. :-(

[10/29/07 19:59:22.401]:!!! ST:Submitting add to subscriber shim.
[10/29/07 19:59:22.401]:!!! ST:Applying command transformation policies.
[10/29/07 19:59:22.401]:!!! ST:Applying policy: %+C%14CPosition End Date
Processing%-C.
[10/29/07 19:59:22.402]:!!! ST: Applying to add #1.
[10/29/07 19:59:22.402]:!!! ST: Evaluating selection criteria for rule
'If ClientPosition Updating with End Date; create workflow scheduling delete
of that value'.
[10/29/07 19:59:22.403]:!!! ST: (if-class-name equal "User") = TRUE.
[10/29/07 19:59:22.403]:!!! ST: (if-op-attr 'ClientPosition' available)
= TRUE.
[10/29/07 19:59:22.403]:!!! ST: (if-op-attr 'ClientPosition' not-match
".+\|") = FALSE.
[10/29/07 19:59:22.404]:!!! ST: Rule rejected.
[10/29/07 19:59:22.404]:!!! ST:Policy returned:
[10/29/07 19:59:22.404]:!!! ST:
<nds dtdversion="3.5" ndsversion="8.x">
<source>
<product version="3.5.10.20070918 ">DirXML</product>
<contact>Novell, Inc.</contact>
</source>
<input>
<add class-name="User" event-id="DEV-IDV-03-DS#20071029235922#2#1"
qualified-src-dn="O=data\OU=usr\OU=edu\CN=BarnicDe"
src-dn="\DEV-ClientIDV\data\usr\edu\BarnicDe" src-entry-id="40225">
<add-attr attr-name="ClientPosition">
<value timestamp="1193702148#2" type="string">21|9993|90103
|999390103|07/01/2007|</value>
<value timestamp="1193702148#3" type="string">22|9993|90104
|999390104|07/01/2007|</value>
<value timestamp="1193702148#4" type="string">91|9991|90001
|999190001|07/01/2007|</value>
<value timestamp="1193702357#5" type="string">20|9993|90102
|999390102|07/01/2007|10/28/2007</value>
</add-attr>
</add>
</input>
</nds>