Expert Mode

Warning

🚧 Hosted environment specific limitation 🚧

AND / OR (expert mode) for ticket conditions are only available for Plus package users.

Enabling the expert mode within your ticket conditions allows you to use AND / OR conditions for any supported method. You can decide which workflow requires this enhanced configuration individually. This section expects that you had a look at Object Conditions already.

Limitation

Zammad offers up to three layers of conditions allowing you to configure very detailed and complex conditions.

Switching to Expert Mode

You can enable or disable expert mode in any supported condition screen. To do so, simply use the expert mode button on the lower right below the conditions for affected objects area.

Screencast showing expert mode being enabled in trigger dialog

Logic Block Conditions

Zammad’s condition expert mode allows you to use logic blocks. These blocks enable you to have one or several sets of conditions that have to match your requirement. These blocks allow matching as and / or and no match.

Match all (AND)

All conditions in this block will be matched with “AND”. This requires all conditions to be met in order to be matched positive.

Match any (OR)

Any condition in this block will be matched with “OR”. This requires one condition to be met in order to be matched positive.

Match none (NOT)

All conditions in this block will be matched with “AND”. To be matched positive, no or any condition may match - but not all together.

See evaluation order to understand how Zammad evaluates triggers in expert mode.

Adding Conditions and Logic Blocks

By using the Icon for adding a new subclause block icon you can add as many logic blocks as you need. New blocks will be added below the object you’re using the Icon for adding a new subclause block icon on.

The level will be automatically set to a lower level than the object you’re using it on.

Screencast showing new logic blocks being added

The same behavior also applies to conditions within logic blocks!

Screencast showing new conditions being added to logic blocks

Warning

Note that removing condition blocks removes all blocks and conditions with it!

Re-arranging Conditions and Logic Blocks

Use ≡ to drag conditions or logic blocks and drop them to the position desired. By using drag and drop, you won’t need to remove and re-add conditions.

Moving logic blocks will also move any condition and, if applicable, logic blocks that are below it.

While you can adjust the order of conditions without any further logic blocks, this won’t have any consequences.

Screencast showing dragging and dropping conditions

Evaluation Order

Here’s a fairly complex diagram on how Zammad evaluates conditions and their blocks.

graph LR %% Hack for proper spacing, %% see https://github.com/mermaid-js/mermaid/issues/3779 classDef addSpacing margin:0,padding:0,display:none; subgraph ConditionCollection["Condition collection"] TL["Top level (match AND)"] TLA(Condition 1-1) TLB(Condition 1-2) subgraph SecondLevelA["2nd level A (match OR)"] x[" "]:::addSpacing SLA1(Condition 2-1) SLA2(Condition 2-2) subgraph ThirdLevelA["3rd level A (NO match)"] TLA1(Condition 3-1) TLA2(Condition 3-2) end subgraph ThirdLevelB["3rd level B (match AND)"] TLB1(Condition 3-3) TLB2(Condition 3-4) end end subgraph SecondLevelB["2nd level B (match AND)"] SLB1(Condition 2-3) SLB2(Condition 2-4) end end subgraph MTLA["Evaluate 3rd level A"] direction LR MTLA1[3-1] MTLA2[3-2] MTLA1 -- AND --- MTLA2 end subgraph MTLB["Evaluate 3rd level B"] direction LR MTLB1[3-3] MTLB2[3-4] MTLB1 -- AND --- MTLB2 end subgraph MSLC["Evaluate 2nd level A"] direction TB MTLC1[2-1] MTLC2[2-2] MTLC3[Negated <br> Result 3rd level A] MTLC4[Result 3rd level B] MTLC1 -- OR --- MTLC2 MTLC2 -- OR --- MTLC3 MTLC3 -- OR --- MTLC4 end subgraph MSLD["Evaluate 2nd level B"] direction LR MTLD1[2-3] MTLD2[2-4] MTLD1 -- AND --- MTLD2 end subgraph MFLA["Evaluate Top level"] direction TB MFLA1[1-1] MFLA2[1-2] MFLA3[Result 2nd level A] MFLA4[Result 2nd level B] MFLA1 -- AND --- MFLA2 MFLA2 -- AND --- MFLA3 MFLA3 -- AND --- MFLA4 end Finish["Condition result <br> (match / no match)"] TLA1 --> MTLA TLA2 --> MTLA TLB1 --> MTLB TLB2 --> MTLB MTLA ==> MSLC MTLB ==> MSLC SLA1 --> MSLC SLA2 --> MSLC SLB1 --> MSLD SLB2 --> MSLD TLA --> MFLA TLB --> MFLA MSLC ==> MFLA MSLD ==> MFLA MFLA ==> Finish