I wanted to share our successful implementation of automated nonconformance report (NCR) routing using Groovy scripting in Application Composer. We reduced manual NCR assignment time by 30% and improved our audit compliance significantly.
The challenge was routing NCRs to the correct quality engineers based on product category, severity level, and engineer workload. Manual routing was error-prone and slow. Our Groovy script automates the entire assignment process:
def assignQualityEngineer(ncrRecord) {
def category = ncrRecord.productCategory
def severity = ncrRecord.severityLevel
return findAvailableEngineer(category, severity)
}
The automation has been running for six months with excellent results. Happy to discuss implementation details.
I’m curious about the performance aspect. Does the Groovy script execute quickly enough that users don’t experience delays when creating NCRs? And have you implemented any error handling for cases where the assignment logic fails?
How do you calculate engineer workload in the script? Are you querying open NCR counts per engineer, or using a more sophisticated metric?
Yes, it’s triggered by an object workflow on the NCR object when status changes to ‘Pending Assignment’. For cases where no engineer matches our criteria, the script assigns to a default quality supervisor who then manually redistributes. This happens less than 5% of the time. The script also sends notification emails to both the assigned engineer and the NCR originator, which has improved response times significantly.
Great question. The Groovy script logs every assignment decision to a custom audit table. We capture the NCR ID, assignment criteria used (category, severity), the selected engineer, their current workload at assignment time, and timestamp. This creates a complete audit trail that satisfies our ISO 9001 requirements.
This is really interesting. How do you handle the audit trail for automated assignments? Our auditors need to see justification for why each NCR was routed to a specific engineer.