From: Luuke on
Hi All,

Exchange 2007 SP1, Outlook 2007 SP2.

I created some classifications and some transport rules. Problem is, I
want people to add a classification to each message they send, so they
should get a notification when they did not select any classification.

I created two rules :
- for each message sent, send a non-delivery report except if tagged
with classification 1
- for each message sent, send a non-delivery report except if tagged
with classification 2

It is working as expected only if I enable one of these rules. But if
I enable both of them, all messages generate non-delivery reports,
whatever classification they have - or not.

Any idea on how I could do this ?

PS : NO, I cannot use/buy any third party product(s) :-)

Thanks.

Luuke
From: Rich Matheisen [MVP] on
On Tue, 9 Feb 2010 04:53:39 -0800 (PST), Luuke <luuke57(a)gmail.com>
wrote:

>Hi All,
>
>Exchange 2007 SP1, Outlook 2007 SP2.
>
>I created some classifications and some transport rules. Problem is, I
>want people to add a classification to each message they send, so they
>should get a notification when they did not select any classification.
>
>I created two rules :
>- for each message sent, send a non-delivery report except if tagged
>with classification 1
>- for each message sent, send a non-delivery report except if tagged
>with classification 2
>
>It is working as expected only if I enable one of these rules. But if
>I enable both of them, all messages generate non-delivery reports,
>whatever classification they have - or not.
>
>Any idea on how I could do this ?
>
>PS : NO, I cannot use/buy any third party product(s) :-)

You'll have to use Powershell to construct that rule. You'll send a
NDR for each message as the action and for the exception you'll have a
list of 'Classification' predicates.

The way it's working now is guaranteed to send a NDR for every message
because if the message has classification 1 it doesn't have
classification 2, and vice-versa. So, you need one rule (not two).
---
Rich Matheisen
MCSE+I, Exchange MVP
From: Luuke on
Hi RIch,

Thanks for your reply.

So, I tried with PS :
$Condition1 = get-transportrulepredicate From
$Condition1.Addresses = @(get-mailbox "Luuke 57")
$Exception = get-transportrulepredicate ExceptIfHasClassification
--> this is not working, I get the message :
Get-TransportRulePredicate : A parameter cannot be found that matches
parameter name 'ExceptIfHasClassification'.

If I type :
$Exception = get-transportrulepredicate HasClassification
--> This is working.

I am using Exchange 2007, is the ExceptIfHasClassification only
working with 2010 ?

And if I use the HasClassification predicate :
$Exception.classification = @(get-messageclassification
"CL1").Identity
--> This is working
But, as I am really not a PS expert, I am not able to find the correct
command to have my two classifications CL1 and CL2...

Thanks a lot for your help !

Luuke
From: Rich Matheisen [MVP] on
On Wed, 10 Feb 2010 02:53:34 -0800 (PST), Luuke <luuke57(a)gmail.com>
wrote:

>Hi RIch,
>
>Thanks for your reply.
>
>So, I tried with PS :
>$Condition1 = get-transportrulepredicate From
>$Condition1.Addresses = @(get-mailbox "Luuke 57")
>$Exception = get-transportrulepredicate ExceptIfHasClassification
>--> this is not working, I get the message :
>Get-TransportRulePredicate : A parameter cannot be found that matches
>parameter name 'ExceptIfHasClassification'.
>
>If I type :
>$Exception = get-transportrulepredicate HasClassification
>--> This is working.
>
>I am using Exchange 2007, is the ExceptIfHasClassification only
>working with 2010 ?
>
>And if I use the HasClassification predicate :
>$Exception.classification = @(get-messageclassification
>"CL1").Identity

See if this works:

$Condition1 = get-transportrulepredicate From
$Condition1.Addresses = @(get-mailbox "luuke 57")
$Exception = get-transportrulepredicate HasClassification
$Exception.classification = @((get-messageclassification
"CL1").Identity,(get-messageclassification "CL2").Identity))
---
Rich Matheisen
MCSE+I, Exchange MVP
From: Luuke on
Hi Rich,

Thanks for your reply.

I have an error message :
[PS] U:\>$Condition1 = get-transportrulepredicate From
[PS] U:\>$Condition1.Addresses = @(get-mailbox "Luuke 57")
[PS] U:\>$Exception = get-transportrulepredicate HasClassification
[PS] U:\>$Exception.classification = @((get-messageclassification
"CL1").Identity,(get-messageclassification "CL2").Identity)

Exception setting "Classification": "Cannot convert "System.Object[]"
to "Microsoft.Exchange.Data.Directory.ADObjectId"."
At line:1 char:12
+ $Exception.c <<<< lassification = @((get-messageclassification
"CL1").Identity,(get-messageclassification "CL2").Identity)

I added "Default\" before the classification name, I still get the
same error. And Google did not help me a lot on that error :-(

Thanks again for your help.

Luuke