Build a ticket management app

Tickets with assignment, an SLA on each status, notifications to the assignee and a daily digest of overdue tickets.

Level
Intermediate
Estimated time
About 60 minutes
Uses
Lifecycles, Access, Workflows, Notifications

What you will build

A Ticket entity with a New → Assigned → In progress → Resolved lifecycle, assignee-based access, notifications on each transition and a scheduled digest.

Architecture

  1. Ticket
  2. Assignment
  3. SLA
  4. Resolution

Steps

  1. 1Model tickets

    Create Ticket with Title, Description, Priority (pick list), Assignee (user lookup) and an auto-number field such as TCK-{yy}{MM}-{5n} for the reference.

  2. 2Add the lifecycle and SLA

    Create the lifecycle with its transitions. Add a validator that refuses Resolved without a resolution note. Transition history records the SLA fields for reporting.

  3. 3Give assignees their tickets

    Give the Support role Read scope Own on Ticket and share tickets with the assignee, or use a rule-based filter that shows tickets assigned to the current user.

  4. 4Notify on every move

    Create a trigger on Ticket edit with the field criterion Status, bound to a notification that emails the assignee and adds an in-app notification.

  5. 5Send a daily digest

    Create a scheduled trigger with a cron expression, and a workflow that runs a saved query for overdue tickets and, for each owner, sends a summary email.

Result

Tickets are numbered, routed, tracked through their lifecycle with SLA history, and nobody has to remember to check for overdue work.

Screenshots

Step-by-step screenshots for this tutorial are coming soon.