Access Request
The Access Request process ensures that all access requests are reviewed and approved by the Owner and Technical Steward before granting access.
Step 1: Validation
General
Name: Validation
Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.parse(execution.getVariable("users"))["owner"] !== undefined &&
JSON.parse(execution.getVariable("users"))["tech_steward"] !== undefined
- Result variable:
check
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle:
R5/PT5M
Flow conditions
- If
Validation successful: proceed to Step 2. - If
Validation failed: proceed to Step 1.1.
Step 1.1: Status updated: Validation failed
General
Name: Status updated: Validation failed
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle:
R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
JSON.stringify({
execution_id: execution.getId(),
stage: "Validation failed",
payload: [
{role: "others", status: "validation_failed"}
]
});
Step 1.2: Send notification to Business user
General
Name: Send notification to Business user
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Validation failed",
is_completed: true,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, no responsible persons have been assigned. Please contact the Admin.",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
End Event
Step 2: Status updated: Validation successful
General
Name: Status updated: Validation successful
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Validation successful",
payload: [
{role: "others", status: "validation_successful"}
]
});
Step 3: Send notification to Business user
General
Name: Send notification to Business user
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Validation successful",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, please specify the reason for your access request.",
need: {
mass_approve: false,
response: true,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {
"approve":"Request access",
"reject":"Cancel the access request"
}
}
}
});
Step 4: Ask Business user
- If
Request access: proceed to Step 5. - If
Cancel the access request: proceed to Step 4.1.
Step 4.1: Status updated: Cancelled
General
Name: Status updated: Cancelled
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Business user canceled the access request",
payload: [
{role: "others", status: "cancelled"}
]
});
Step 4.2: Send Notification to Business user
General
Name: Send notification to Business user
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Business user canceled the access request",
is_completed: true,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, your access request has been successfully canceled.",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
End Event
Step 5: Status updated: Pending Owner's approval
General
Name: Status updated: Pending Owner's approval
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Owner approval",
payload: [
{role: "others", status: "pending_owner's_approval"}
]
});
Step 6: Send notification to Owner
General
Name: Send notification to Owner
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Owner approval",
is_completed: false,
payload: {
to: JSON.parse(execution.getVariable("users"))["owner"],
message: execution.getVariable("expertise_text"),
need: {
mass_approve: false,
response: true,
assign: false
},
ui: {
caption: "Dear user, access to this object has been requested. You can view the purpose above.",
assign: "",
buttons: {
"approve":"Approve",
"reject":"Reject with reason"
}
}
}
});
Step 7: Ask Owner
- If
Approve: proceed to Step 8. - If
Reject with reason: proceed to Step 7.1.
Step 7.1: Status updated: Rejected
General
Name: Status updated: Rejected
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access rejected",
is_completed: true,
payload: [
{role: "others", status: "rejected"}
]
});
Step 7.2: Send Notification to Business user
General
Name: Send notification to Business user
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access rejected",
is_completed: true,
payload: {
to: [execution.getVariable("invoker_id")],
message: execution.getVariable("expertise_text"),
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "Dear user, your access request has been rejected. You can review the reason above.",
assign: "",
buttons: {}
}
}
});
End event
Step 8: Status updated: Access assignment
General
Name: Status updated: Access assignment
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access assignment",
payload: [
{role: "others", status: "pending_TS_approval"}
]
});
Step 9: Send Notification to Business user
General
Name: Send notification to Business user
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access assignment",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, your access request has been approved by the Owner and has now been sent to the Technical steward for processing",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
Step 10: Send Notification to Technical steward
General
Name: Send notification to Technical steward
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access assignment",
payload: {
to: JSON.parse(execution.getVariable("users"))["tech_steward"],
message: "Dear user, the Owner has approved access to this object. Please proceed with granting access or provide a reason for denial.",
need: {
mass_approve: false,
response: true,
assign: false
},
ui: {
caption:"",
assign: "",
buttons: {
"approve":"Grant access",
"reject":"Access cannot be granted"
}
}
}
});
Step 11: Ask Technical steward
- If
Grant access: proceed to Step 12. - If
Access cannot be granted: proceed to Step 7.1.
Step 12: Status updated: Access granted
General
Name: Status updated: Access granted
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access granted",
payload: [
{role: "others", status: "access_granted"}
]
});
Step 13: Send Notification to Business user
General
Name: Send notification to Business user
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access granted",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, access to this object has been granted.",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
Step 14: Grant Access action
General
Name: Grant Access action
Implementation
- Type: Connector
- Connector ID: http-connector
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle: R5/PT5M
Connector inputs
Headers
- Local variable name:
headers - Assignment type: Map
- Map entries:
- Key: Content-Type
- Value: application/json
Method
- Local variable name:
method - Assignment type: String or expression
- Value: POST
Payload
- Local variable name:
payload - Assignment type: Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.stringify({
execution_id: execution.getId(),
stage: "Access granted",
is_completed: true,
payload: {
scope: "read",
permission: "allow"
}
});
End Event
Access request schema
