Skip to content

Latest commit

 

History

History
204 lines (156 loc) · 5.66 KB

File metadata and controls

204 lines (156 loc) · 5.66 KB

Expert object conditions

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.

Note

The option "Expert mode" is available since Zammad 5.4.

This section expects that you had a look at :doc:`basics` 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

Hint

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.

Hint

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.

.. mermaid::

   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