Custom app to create a follow-up ticket when any survey question receives a rating below 3
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 hours ago
Hi Community,
I am looking to build a custom application in ServiceNow that automatically creates a follow-up ticket when any rating question in a submitted survey receives a score below 3.
We currently have multiple surveys with different questions. The solution should support these existing surveys and any surveys created in the future, without requiring us to hard-code survey names, question IDs, or update the application each time a question is added.
Required behavior
Evaluate all rating questions once a survey response is submitted.
Create one follow-up ticket per survey submission if at least one question has a rating below 3.
All questions and their responses should be recorded in the ticket.
Include the survey name, respondent where permitted, submission date, question text, ratings, relevant comments, and a link to the survey response and originating record, where available.
Prevent duplicate tickets if the response is processed again.
Support for different surveys
We would like a reusable, configuration-driven approach that discovers the rating questions in each survey dynamically. Ideally, new surveys using the supported rating scale should be covered automatically.
If surveys use different scales—for example, 1–5 versus 1–10—or reverse scoring, we would need configurable rules rather than assuming that “below 3” has the same meaning everywhere.
Questions for the community
What is the recommended approach for implementing this within a scoped custom application: Flow Designer, a Business Rule, or another mechanism?
Which survey response and question-answer records should we evaluate, and what is the best trigger to ensure all answers have been saved before processing?
How can we reliably identify rating questions and their numeric scores across different surveys without hard-coding question IDs?
What is the best way to make this work automatically for future surveys while supporting configurable thresholds and scales?
Would you recommend a custom task-based record for the follow-up ticket, and how should we handle duplicate prevention and anonymous responses?
Are there existing platform capabilities or licensing considerations we should assess before building the app?
Example acceptance scenario
A submitted survey contains five rating questions. Two answers are rated 2 and 1. The application should create exactly one follow-up ticket containing all questions and their ratings and responses. A newly created survey using the same rating scale should work without code changes.
Any recommended architecture, implementation examples, or lessons learned would be appreciated.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
4 hours ago - last edited 4 hours ago
Hello @Rohansalwi
- Implementation Approach: Use a Record-Triggered Flow on survey completion with reusable Script Includes for evaluation logic and ticket creation.
- Records & Trigger: Evaluate asmt_metric_result records and trigger after the related asmt_assessment_instance reaches a completed/submitted state so all answers are saved.
- Identify Rating Questions: Dynamically inspect the question/metric type and metric definition metadata (asmt_metric, asmt_metric_definition) rather than hard-coding question IDs.
- Future Survey Support: Use configuration tables for thresholds, scales, and scoring rules so new surveys are automatically supported without code changes.
- Follow-up Ticket Design: Create a custom task-based record linked to the survey instance, use a unique index on the survey instance for duplicate prevention, and suppress respondent details for anonymous surveys.
- ACL / Licensing: Verify Assessments and Surveys table access, scoped-app cross-scope permissions, ACL requirements, and any licensing impacts related to your ServiceNow assessment/survey capabilities.
Hope that helps!
