This is with IDM2, and GroupWise driver 2.1.1. I don't see it previously posted,
or any updates to this driver on the download site. I haven't checked the IDM3
version, though.

I have the GCVs "Remove GroupWise Account from all Distribution Lists on expire"
(GW.RemoveDLonExpire) and "Remove GroupWise Account from all Distribution Lists
on disable" (GW.RemoveDLonDisable) both set to "true". This seems to mean that
when eDir attribute Login Disabled changes to true, that the mailbox associated
should be removed from all distribution lists. This doesn't work. It looks to me
like a bug in the driver, specifically in the Subscriber Event Transform -->
Event Policies --> Remove GroupWise Account from all Dist Lists rule.

The default rule:

<rule>
<description>Remove GroupWise account from all Dist
Lists</description>
<conditions>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">disable</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">expire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">expire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">disable</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">expire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
</conditions>
<actions>
<do-clear-dest-attr-value class-name="User"
name="Distribution List DN"/>
</actions>
</rule>

seems to me to be missing a case. Note that it handles four possible cases for
delete and expire, but only three cases for disable. The one that's missing is
op-attr Login Disabled=true AND GW.UserDisable=true AND
GW.RemoveDLonDisable=true AND objectclass=user.

Here's the corrected rule, handling all four cases for disable:

<rule>
<description>Remove GroupWise account from all Dist
Lists</description>
<conditions>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">disable</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">expire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-operation op="equal">delete</if-operation>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDelete"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">expire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Disabled"
op="equal">true</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserDisable"
op="equal">disable</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">disable</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">expire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonExpire"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
<and>
<if-op-attr name="Login Expiration Time"
op="changing"/>
<if-op-attr mode="regex" name="Login Expiration
Time" op="changing-to">.*</if-op-attr>
<if-global-variable name="GW.RemoveDLonDisable"
op="equal">true</if-global-variable>
<if-global-variable name="GW.UserExpire"
op="equal">dispire</if-global-variable>
<if-class-name op="equal">User</if-class-name>
</and>
</conditions>
<actions>
<do-clear-dest-attr-value class-name="User"
name="Distribution List DN"/>
</actions>
</rule>

Tested and works here.


---------------------------------------------------------------------------
David Gersic dgersic_@_niu.edu

I'm tired of receiving rubbish in my mailbox, so the E-mail address is
munged to foil the junkmail bots. Humans will figure it out on their own.