Flowset Technical Overview

Flowset Architecture

Flowset is an application that runs on Zendesk and it controls the way that agents interact with tickets.  It provides guidance and control over what details are captured onto a ticket to ensure that the ticket is handled correctly.

The client app uses the Zendesk Application Framework (ZAF) to understand the details of the ticket.  When the ticket is ready to proceed further through the process, the agent nominates what they wish to do using the sidebar app (for example, perform a transition to a new activity).  When the ticket is submitted, the app sends additional information with the ticket updates, which is used by the Flowset server to perform the processing needed to proceed through the workflow.

All processing of the workflow occurs on the Flowset server and consequently can happen automatically in response to changes on the ticket (for example, assigning a workflow to a new ticket automatically).  Any updates that need to be made to the ticket to reflect the state of the workflow on the ticket are made from the server using the Zendesk REST Application Programming Interface (API) .

Stored Data

Details of the workflow that is running on a ticket are stored in a database on the Flowset servers.  When a ticket runs a workflow, the following details are stored in the database.

Workflow - the id of the workflow(s) running on the ticket and whether it is active or complete.

Activity - the id of the activities in the workflow that have run on the ticket and which are current and which are complete.

Check List Items - Details of the check list items for each activity.  Includes the state (to do, done), the date it was done and the name of the Agent that did it.

All of the data in the database is encrypted at rest.  The server code uses secure connections to the database to retrieve and update data. 

These details are deleted once the ticket is finally closed.

Flowset App Requirements

The Flowset app uses app requirements to create various Ticket Fields, Targets and Triggers.  These are used by the app to communicate and record details about the workflow that is running on a ticket.

Ticket Fields

[Flowset] Data - This text custom field is populated by the Flowset app to instruct the server how to process the workflow for this ticket.  The field will be hidden in the agent interface, but it is vital that the field is present on any Ticket Form (Zendesk Enterprise) where you wish to be able to run workflows.

[Flowset] Case Type - This custom drop down has 2 values (Top, Sub).  When a workflow is running on a ticket, it indicates whether this is the top level workflow or a sub workflow (for example on split activity tickets).

[Flowset] Activity Block - When your workflow is configured to Mark Blocked Activities, this custom drop down field is used to do this.  It has the values Not Blocked, Partially Blocked and Blocked to indicate the extent of split activity blocking that is occurring. 

[Flowset] Notify Block - When your workflow is configured to Notify Assignee when Activities are Unblocked, this field is set and will activate a trigger (see below) which will send an email to the ticket assignee.

Targets

[Flowset] Process Workflow - Target called when normal processing of the workflow occurs due to an agent editing the ticket using the agent interface.  

[Flowset] New Ticket Workflow - Target called when a new ticket is created.  It will attempt to see if a workflow can be automatically assigned to the ticket based on workflow start conditions.

[Flowset] Closed Ticket Workflow  - Target called when tickets are closed.  This will let the Flowset server know that the ticket is closed and any details the server holds of workflows that have run on this ticket will be deleted.

[Flowset] Auto Ticket Workflow - Target that responds to automatic transitions firing on the ticket (Pending Reopen, Solve Reopen, Auto Transition 1 - 3).

Triggers

[Flowset] Process Workflow - Trigger that fires when normal processing of the workflow occurs as a result of the agent editing the ticket using the agent interface.

[Flowset] Mark Agent Created Ticket - Tags the ticket with flowset:agent_create when a ticket is created by a user who is not an end user.

[Flowset] Add workflow to new tickets - Trigger that fires when a new ticket is created without a manually selected workflow.  Will call the server to see if a workflow can be allocated automatically.

[Flowset] Delete cases for closed tickets - Triggers when a ticket that has been under workflow control is closed.  Will instruct the server to delete and old workflow information for the ticket.

[Flowset] Automatic transitions for ticket reopen - Triggers when a solved ticket is reopened by an end user.  Will attempt to perform any Solved Reopen automatic transition defined for the workflow.

[Flowset] Automatic transitions for end user response - Triggers when a pending ticket is reopened by an end user.  Will attempt to perform any Pending Reopen automatic transition defined for the current activity,

[Flowset] Custom automatic transitions 1 - Triggers when the tag flowset:external_custom1 is added to the ticket.  Will attempt to perform any Auto Transition 1 defined for the current activity.

[Flowset] Custom automatic transitions 2 - Triggers when the tag flowset:external_custom2 is added to the ticket.  Will attempt to perform any Auto Transition 2 defined for the current activity.

[Flowset] Custom automatic transitions 3 - Triggers when the tag flowset:external_custom3 is added to the ticket.  Will attempt to perform any Auto Transition 3 defined for the current activity.

[Flowset] Notify activity unblocked - Triggers when a previously blocked activity becomes unblocked.  Will send an email notification to the ticket assignee.

Generated Ticket Fields

Every workflow that is published will have a custom dropdown ticket field generated which represents each of the activities in the workflow.  There will be a drop down value in the field that corresponds to each activity defined in the workflow.  These generated fields will be named [Flowset] <Workflow Name>, where <Workflow Name> is the name given to the workflow.  For example, a workflow named 'Change Management', will have a custom field named '[Flowset] Change Management' generated.

When the workflow runs on a ticket, the generated workflow field will be set to the name of the activity currently running on the ticket.  Using this field, you can build views to track the progress of tickets through the various workflows you have defined.

Operationally

The Flowset application and database servers run on Amazon Web Services (AWS) EC2 instances.  The application servers span multiple availability zones.  The Database is mirrored in different availability zones for redundancy.  Daily backups are taken and we hold the last 7 days backups. 

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.