Authorization

Authorization workflow is a module within the Request Modeler that governs the approval process of all the requests that flows through the application.


Once a request reaches the authorization stage, it verifies the inputs provided for the Transaction Amount and Transaction Currency fields. And, based on this, the levels of authorizations required for that specific request is delegated by the Request Modeler. If these fields are not available in the library related to any request, then the first authorization workflow defined will be delegated and the request will flow through it.


The levels of authorizations are classified as follows:

  • None - No authorization is required and the request gets approved directly.
  • Self - When a request is submitted, the initiators need to self-authorize their own request.
  • Four eyes - The request will go through one level of authorization i.e., someone other than the initiator should verify the request and authorize it.
  • Six eyes - The request will go through two levels of authorizations i.e., two users other than the initiator should verify the request and authorize it one after the other.
  • Tree - The request will go through many levels (as required) of authorizations based on the organization's hierarchy defined within the authorization system. It can contain multiple authorization flows or the combination of flows. The delegation of the flow will be based on the role of the approvers, transaction data etc.


For Six eyes and Tree type of authorization levels, you can define a hierarchy when there are two or more approvers. The second approver can approve the request only after the first approver has approved the request. To configure the approval flow based on hierarchy, refer Hierarchical Approval.


Authorization Workflow Example:

{
	"authflow" : [
	{
		"tier" : [
		{
			"type" : "number", 
			"min" : 0,
			"max" : 10,
			"workflow" : {
				"type" : "self",
				"flow" : {
					"completed" : false
				}
			}
		},

		{
			"type" : "number", 
			"min" : 10,
			"max" : 100,
			"workflow" : {
				"type" : "foureye",
				"flow" : {
					"completed" : false 
				}
			}
		}, 

		{
			"type" : "number", 
			"min" : 100,
			"max" : 1000,
			"workflow" : {
				"type" : "sixeye",
				"flow" : {
					"completed" : false 
				}
			}
		},

		{
			"type" : "number", 
			"min" : 1000,
			"max" : 10000,
			"workflow" : {
				"type" : "tree",
					"flow" : {
					"condition" : "OR",
					"completed": false,
					"flow": [
					{
						"completed": false,
						"flow": [
						{
							"role": "A",
							"level": 1,
							"count": 1,
							"completed": true
						},
						{
							"role": "B",
							"level": 2,
							"count": 2,
							"completed": false
						},
						{
							"role": "D",
							"level": 4,
							"count": 1,
							"completed": false
						}
						]
					},
					{	
						"completed": false,
						"flow": [
						{
							"role": "A",
							"level": 1,
							"count": 1,
							"completed": true
						},
						{
							"role": "C",
							"level": 3,
							"count": 1,
							"completed": false
						},
						{
							"role": "D",
							"level": 4,
							"count": 1,
							"completed": false
						}
						]
					},
					{
						"completed": false,
						"flow": [
						{
							"role": "X",
							"level": 2,
							"count": 1,
							"completed": false
						},
						{
							"role": "Y",
							"level": 3,
							"count": 1,
							"completed": true
						}
						]
					},
					{
						"role": "E",
						"level": 5,
						"count": 1,
						"completed": false
					}
					]
				}
			}
		}
		]
	}
]
}