We’re using ETQ Reliance 2021 REST API to calculate risk scores for risk assessments, but we’re seeing different results compared to what the UI displays for the same assessment data. The API endpoint returns one risk level while the UI shows another.
UI shows risk_score: 12, risk_level: “High” for same inputs
We suspect there might be different risk matrix versions or assessment type configurations affecting the calculation logic. The inconsistency is causing data integrity issues in our reporting. Are there specific matrix version management settings we need to account for, or is the calculation supposed to be deterministic across API and UI?
Risk matrix calculations in ETQ can vary based on the assessment type configuration. Each assessment type can have its own risk matrix with different threshold definitions for Low/Medium/High/Critical. The API might be using a default matrix while the UI is using the assessment-type-specific matrix. Check your Risk Management configuration to see if “Process Risk” has a custom matrix assigned.
Don’t overlook the assessment status field. Some risk matrix configurations apply different calculation rules based on whether the assessment is Draft, In Review, or Approved. The UI might be showing results for an Approved status while your API call is calculating for Draft status. The thresholds for risk levels can differ between statuses in some configurations.
I’ve seen this issue before. ETQ 2021 has a known quirk where the API calculation endpoint uses cached matrix definitions that might be stale if matrices were recently updated. The UI always uses the live configuration. Try clearing the API cache or explicitly passing the matrix_id in your calculation request. Also verify that the assessment record you’re comparing against in the UI was created after any matrix configuration changes.
I checked and Process Risk does have a custom matrix. But how do I tell the API to use that specific matrix? The API documentation doesn’t mention matrix selection in the calculate endpoint. Is there a parameter I’m missing?