Issue Report
The Issue Reporting process ensures that reported issues are assigned, reviewed, and resolved through a structured workflow, with final confirmation before closure.
Step 1: Status updated: Draft
General
Name: Status updated: Draft
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: "Assigning responsible & defining issue",
payload: [
{ role: "others", status: "draft" }
]
});
Step 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: "Assigning responsible & defining issue",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, please designate a responsible person and provide a comprehensive description of the issue. Before proceeding, ensure that all necessary information is accurate and complete. Click ‘Report issue’ to confirm the details or ‘Cancel’ if the request is no longer needed.",
need: {
mass_approve: false,
response: true,
assign: true
},
ui: {
caption: "",
assign: "Dear user, please assign a responsible person",
buttons: {
approve: "Report issue",
reject: "Cancel"
}
}
}
});
Step 3: Ask Invoker
- If
Report issue: proceed to Step 4. - If
Cancel: proceed to Step 3.1.
Step 3.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: "Issue report сancelled",
payload: [
{ role: "others", status: "cancelled" }
]
});
Step 3.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: "Issue report cancelled",
is_completed: true,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, your issue report has been successfully cancelled.",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
End event
Step 4: Validation
General
Name: Validation
Script
- Format: JavaScript
- Type: Inline script
- Script:
JSON.parse(execution.getVariable("users"))["assignee"] !== undefined
- Result variable:
check
Asynchronous continuations
- Before and Exclusive
Job execution
- Retry time cycle:
R5/PT5M
Flow conditions
- If
Validation successful: proceed to Step 5. - If
Validation failed: proceed to Step 4.1.
Step 4.1: 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: "Assignment validation failed",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, it appears that no responsible person has been assigned to this issue. Please review the details, designate an assignee, and resubmit the issue to proceed.",
need: {
mass_approve: false,
response: true,
assign: true
},
ui: {
caption: "",
assign: "",
buttons: {
approve: "Report issue",
reject: "Cancel"
}
}
}
});
Flow condition
- Return to: Step 3 Ask Business user.
Step 5: Status updated: Assigned for resolution
General
Name: Status updated: Assigned for resolution
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: "Approval by Assignee",
payload: [
{ role: "others", status: "pending_assignee_approval" }
]
});
Step 6: Send Notification to Assignee
General
Name: Send notification to Assignee
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: "Approval by Assignee",
is_completed: false,
payload: {
to: JSON.parse(execution.getVariable("users"))["assignee"],
message: execution.getVariable("expertise_text"),
need: {
mass_approve: false,
response: true,
assign: false
},
ui: {
caption: "Dear user, you have been assigned to this issue report. Please review the details and confirm your acceptance to proceed. If you are unable to take responsibility, kindly specify the reason for rejection. The purpose of the issue request is provided above for your reference.",
assign: "",
buttons: {
approve: "Accept and proceed",
reject: "Provide a reason and reject"
}
}
}
});
Step 7: Ask Assignee
- If
Accept and proceed: proceed to Step 8. - If
Provide a reason and reject: 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: "Assignee rejected the issue report",
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: "Assignee rejected the issue report",
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 issue report has been rejected by the assigned person. Please review the reason for rejection above to understand the context. No further action is required. If you need to submit a new report, please start the process again.",
assign: "",
buttons: {}
}
}
});
End event
Step 8: Status updated: Resolution in progress
General
Name: Status updated: Resolution in progress
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: "Resolution in progress",
payload: [
{role: "others", status: "resolution_in_progress"}
]
});
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: "Resolution in progress",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, the assignee has approved the changes, and work on resolving the issue is now in progress. You will be notified of any updates or once the issue is resolved.",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
Step 10: Send Notification to Assignee
General
Name: Send notification to Assignee
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: "Resolution in progress",
is_completed: false,
payload: {
to: JSON.parse(execution.getVariable("users"))["assignee"],
message: "Dear user, please confirm whether the issue has been resolved. If resolved, click the 'Issue resolved' button. If the issue cannot be resolved, please provide a reason first, then click 'Issue cannot be resolved'.",
need: {
mass_approve: false,
response: true,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {
approve: "Issue resolved",
reject: "Issue cannot be resolved"
}
}
}
});
Step 11: Ask Assignee
Decision Points
- If
Issue resolved: proceed to Step 12. - If
Issue cannot be resolved: proceed to Step 11.1.
Step 11.1: Status updated: Cannot be resolved
General
Name: Status updated: Cannot be resolved
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: "Issue сannot be resolved",
payload: [
{role: "others", status: "cannot_be_resolved"}
]
});
Step 11.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: "Issue cannot be resolved",
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, the issue cannot be resolved. You can review the reason above. No further action is required. If you need to submit a new report, please start the process again.",
assign: "",
buttons: {}
}
}
});
End Event
Step 12: Status Updated: Finished
General
Name: Status Updated: Finished
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: "The issue resolved by Assignee",
payload: [
{role: "others", status: "finished"}
]
});
End Event
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: "The issue resolved by Assignee",
is_completed: false,
payload: {
to: [execution.getVariable("invoker_id")],
message: "Dear user, has the issue been resolved? If so, please click 'Confirm resolution'. If not, provide a reason for the continued issue first, then click 'Mark as not resolved'.",
need: {
mass_approve: false,
response: true,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {
approve: "Confirm resolution",
reject: "Mark as not resolved"
}
}
}
});
Step 14: Ask Business user
Decision
- If
Confirm resolution: proceed to Step 15. - If
Mark as not resolved: proceed to Step 14.1.
End Event
Step 14.1: Send Notification to Assignee
General
Name: Send notification to Assignee
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: "Issue not resolved",
is_completed: true,
payload: {
to: JSON.parse(execution.getVariable("users"))["assignee"],
message: execution.getVariable("expertise_text"),
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "Dear user, the issue has been marked as not resolved. If you agree to proceed with the resolution, please click 'Accept and proceed'. If the issue cannot be resolved, please provide an explanation first, then click 'Reject with a reason'.",
assign: "",
buttons: {
approve: "Accept and proceed",
reject: "Provide a reason and reject"
}
}
}
});
Return to
- Step 7 Ask Assignee
Step 15: 15. Status updated: Resolved
General
Name: 15. Status updated: Resolved
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: "The issue resolved",
payload: [
{role: "others", status: "resolved"}
]
});
Step 16: Send Notification to Assignee
General
Name: Send notification to Assignee
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: "The issue resolved",
is_completed: true,
payload: {
to: JSON.parse(execution.getVariable("users"))["assignee"],
message: "Dear user, the issue resolution has been confirmed.",
need: {
mass_approve: false,
response: false,
assign: false
},
ui: {
caption: "",
assign: "",
buttons: {}
}
}
});
End Event
Issue report schema
