9 KiB
Workflow Editor User Guide
Overview
The Workflow Editor lets you visually design and configure ticket workflows with a step-by-step approach.
Understanding the Steps
Step 1-5: Classification (Purple)
What they do: Match keywords in ticket title/description to classify the ticket
Step 1: Branch Routing
- Determines which team handles the ticket (NOC, SOC, Service Desk)
- Uses classification rules with keywords like "backup", "phishing", "password reset"
- Config:
{"rule_type": "branch_routing", "result_field": "branch", "default_value": "service_desk"}
Step 2: Ticket Type
- Classifies as Incident (2) or Service Request (1)
- Keywords: "not working", "stopped working" → Incident
- Keywords: "how do i", "please set up" → Service Request
- Config:
{"rule_type": "ticket_type", "result_field": "ticket_type"}
Step 3: Issue Classification
- Determines issue type (Email, AD, Network, Hardware, etc.) and sub-issue type
- Uses 50+ classification rules with specific keywords
- Config:
{"rule_type": "issue_classification", "result_field": "issue_type", "result_field_2": "sub_issue_type"}
Step 4: Priority
- Sets ticket priority based on keywords and impact
- Security keywords → Security Event priority
- "multiple users" → Critical priority
- Config:
{"rule_type": "priority", "result_field": "priority"}
Step 5: Queue Routing
- Routes to correct queue based on device patterns, priority, etc.
- Critical priority → Level 2 queue
- Workstation devices → Level 1 queue
- Config:
{"rule_type": "queue_routing", "result_field": "queue_id"}
Step 6: Validation (Yellow)
What it does: Checks if all classifications are valid against database picklists
- Validates issue_type exists
- Validates sub_issue_type is a child of issue_type
- Validates priority exists
- Validates queue exists
- Config:
{"required_fields": []} - Output: Sets
context.validation.is_valid(true/false)
Step 7: AI Classification (Blue) - Conditional
What it does: Uses AI to classify fields that robotic classification missed
- Only runs if: Validation failed (condition:
context.validation.is_valid === false) - Sends ticket to AI with available picklist options
- AI selects the correct issue type, sub-issue type, etc.
- Config:
{"template_purpose": "ambiguous_classification", "skip_if_valid": true}
Step 8: AI Title Cleanup (Blue) - Conditional
What it does: Cleans up messy ticket titles
- Only runs if: Classification indicates title needs cleanup
- Removes email prefixes (Re:, Fw:), ticket numbers, excessive punctuation
- Condenses long titles to max 80 characters
- Config:
{"template_purpose": "title_cleanup"}
Step 9: Delay (Gray)
What it does: Waits before updating Autotask
- Configurable delay (default: 30 seconds)
- Allows time for user to cancel if needed
- Uses template variable for setting:
{{settings.autotask_update_delay_ms}} - Config:
{"duration_ms": "{{settings.autotask_update_delay_ms}}"}
Step 10: Update Ticket (Green)
What it does: Writes all accumulated field changes to Autotask
- Takes all changes from previous steps (stored in
context.field_changes) - Updates ticket in Autotask via API
- Updates local database copy
- Config:
{"use_field_changes": true} - Important: If this step fails, workflow stops (on_failure: 'stop')
Step 11: AI Troubleshooting (Blue) - Conditional
What it does: Generates troubleshooting steps for incidents
- Only runs if: Ticket type is Incident (ticket_type === 2)
- AI generates 3-5 troubleshooting steps
- Creates a ticket note with the steps (TODO: not implemented yet)
- Config:
{"template_purpose": "troubleshooting_steps", "create_note": true}
How to Use the Editor
Viewing Steps
- Go to
/admin/workflow/1(or click Edit on a workflow) - Steps tab shows all steps in order
- Each step shows:
- Step number (e.g., #1)
- Step name (e.g., "Branch Routing")
- Step type badge (e.g., "classify")
- Active/Inactive toggle
Expanding a Step
- Click "Expand" button on any step
- You'll see:
- Blue help box explaining what the step does
- Configuration fields list
- Example JSON
- Step Name input
- On Failure dropdown
- Configuration JSON textarea
Editing Configuration
The JSON config defines step behavior:
Example for "Branch Routing":
{
"rule_type": "branch_routing",
"result_field": "branch",
"default_value": "service_desk"
}
rule_type: Which classification rules to useresult_field: Where to store the result in contextdefault_value: What to use if no rules match
Reordering Steps
- Use ↑ ↓ arrows on the left side of each step
- Steps execute in numerical order (1, 2, 3...)
- Reordering updates the step_order automatically
Toggling Steps
- Toggle switch on each step to enable/disable
- Disabled steps are skipped during execution
- Useful for debugging (e.g., disable AI steps to test faster)
Saving Changes
- Click "Save Changes" button at the top
- Saves both workflow metadata and all steps
- Green toast notification on success
Other Tabs
Trigger Tab
- Workflow Name: Display name
- Description: What this workflow does
- Trigger Event: ticket.created or ticket.updated
- Trigger Conditions: JSON array of conditions that must match
- Example: Only process tickets in NOC/Service Desk categories
- Example: Exclude certain creator users or companies
Test Tab
- Dry-run testing (shows endpoint for now)
- Select a ticket ID
- Run workflow without actually updating Autotask
- See step-by-step results and proposed changes
History Tab
- Execution history for this specific workflow
- Shows recent runs with status (completed, failed, skipped)
- Click to see detailed step-by-step breakdown
Tips for Non-Technical Users
You don't need to write code! The JSON is just configuration:
-
To change what a step does:
- Expand the step
- Read the blue help box
- Copy the example JSON
- Modify the values you need
-
To disable a step temporarily:
- Just toggle it off (no need to delete)
-
To test changes:
- Save your changes
- Go to Test tab
- Run a dry-run to see what would happen
-
To see if it's working:
- Go to History tab
- Look for recent executions
- Check if status is "completed" (green)
-
Common Changes:
- Change delay: Edit Step 9, change
duration_msfrom 30000 to 60000 (60 seconds) - Disable AI: Toggle off Steps 7, 8, 11 to use only robotic classification
- Change default branch: Edit Step 1, change
default_valuefrom "service_desk" to "noc"
- Change delay: Edit Step 9, change
Visual Guide
Collapsed Step:
┌─────────────────────────────────────────┐
│ ↑↓ #1 Branch Routing [classify] ✓ │
│ [Expand] │
└─────────────────────────────────────────┘
Expanded Step:
┌─────────────────────────────────────────┐
│ ↑↓ #1 Branch Routing [classify] ✓ │
│ [Collapse] │
├─────────────────────────────────────────┤
│ 📘 What This Step Does │
│ Uses keyword-based classification... │
│ │
│ Configuration Fields: │
│ • rule_type: branch_routing │
│ • result_field: branch │
│ • default_value: service_desk │
│ │
│ Example: {"rule_type": "branch_r..."} │
├─────────────────────────────────────────┤
│ Step Name: [Branch Routing______] │
│ │
│ On Failure: [Continue to next step ▼] │
│ │
│ Configuration (JSON): │
│ ┌───────────────────────────────────┐ │
│ │ { │ │
│ │ "rule_type": "branch_routing", │ │
│ │ "result_field": "branch", │ │
│ │ "default_value": "service_desk" │ │
│ │ } │ │
│ └───────────────────────────────────┘ │
└─────────────────────────────────────────┘
Need help? The blue help box in each expanded step explains everything you need to know!