Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • to implement the 4-eyes principle: an Approver must confirm the intervention of an Operator.
  • to keep track of pending Approval Requests.
  • to offer fallback from to a number of Approvers.

Display feature availability
StartingFromRelease2.8.0

...

JOC Cockpit, Controller and Agents are operated without internet connection.

...

Definitions

Notifications

Notification Channels include

...

  • Any member of an Operator Group can prompt an Approver who is a member of the matching Approver Group for confirmation of an intervention.
    • For a given Approval Request the Operator can specify the preferred Approver (identified from the Approver's account) from the matching Approver Group.
    • If no preferred Approver is specified then the first Approver of the matching Approver Group will be assigned the Approval Request.
  • Any member of an Approver Group matching the requesting Operator Group can handle Approval Requests.
    • The preferred Approver specified by the Operator for an Approval Request will be assigned and notified first.
    • If the preferred Approver will not respond to the Approval Request within a configurable period, then the next Approver in the Approver Group will be assigned and notified.

Approval Process Flow

The process flow works like this:

Graphviz
templateGraphvizSubgraphs
digraph structs {
    compound=true;
    # rankdir=LR;

    Operator [label="   Operator   ",style="filled",fillcolor="orange",fontname="Arial",fontsize="12pt"]
    Operator2 [label="   Operator   ",style="filled",fillcolor="orange",fontname="Arial",fontsize="12pt"]
    Approver [label="   Approver   ",style="filled",fillcolor="dodgerblue",fontname="Arial",fontsize="12pt"]
    Approval_Request [label="   Approval Request   ",style="filled",fillcolor="limegreen",fontname="Arial",fontsize="12pt"]
    Approver_Notification [label="   Notification   ",style="filled",fillcolor="limegreen",fontname="Arial",fontsize="12pt"] 
    Operator_Notification [label="   Notification   ",style="filled",fillcolor="limegreen",fontname="Arial",fontsize="12pt"] 
    Intervention [label="   Intervention   ",style="filled",fillcolor="limegreen",fontname="Arial",fontsize="12pt"]
 
    API_Server1 [label="   API Server   ",style="filled",fillcolor="grey",fontname="Arial",fontsize="12pt"]
    API_Server2 [label="   API Server   ",style="filled",fillcolor="grey",fontname="Arial",fontsize="12pt"] 
    Authorization_Server [label="   Authorization Server   ",style="filled",fillcolor="grey",fontname="Arial",fontsize="12pt"]
    Authorization_Code [shape="ellipse",label="   Authorization Code   ",style="filled",fillcolor="green",fontname="Arial",fontsize="12pt"]
    Authorization_Code2 [shape="ellipse",label="   Authorization Code   ",style="filled",fillcolor="green",fontname="Arial",fontsize="12pt"]

    Create_ApprovalRequest [shape="rectangle",label="Create/Sign",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Send_APIServer [shape="rectangle",label="Send",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Create_ApproverNotification [shape="rectangle",label="Create",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Notify_Approver [shape="rectangle",label="Notify",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]

    Connect_AuthorizationServer [shape="rectangle",label="Connect",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Create_OperatorNotification [shape="rectangle",label="Create",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Notify_Operator [shape="rectangle",label="Notify",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
 
    Authenticate_AuthorizationServer [shape="rectangle",label="Authenticate",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Create_AuthorizationCode [shape="rectangle",label="Create",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]
    Apply_AuthorizationCode [shape="rectangle",label="Apply",fontname="Arial",fontsize="10pt",style="filled",fillcolor="white"]

    subgraph encrypt {
        fontname="Arial";
        fontsize="12pt";

        Operator -> Create_ApprovalRequest -> Approval_Request [label="",fontname="Arial",fontsize="10pt"];
        Approval_Request -> Send_APIServer -> API_Server1 -> Create_ApproverNotification [label="",fontname="Arial",fontsize="10pt"];
        Create_ApproverNotification -> Approver_Notification -> Notify_Approver -> Approver;

        Approver -> Connect_AuthorizationServer -> Authorization_Server ->  Authenticate_AuthorizationServer -> Create_AuthorizationCode -> Authorization_Code -> API_Server2;
        API_Server2 -> Create_OperatorNotification -> Operator_Notification -> Notify_Operator -> Operator2 -> Apply_AuthorizationCode -> Authorization_Code2 -> Intervention;
    }
}

Use Cases

Operator prompts Approver to confirm Intervention

...