Skip to content
Notifications
Clear all

Has anyone built a workflow for third-party security questionnaires?

1 Posts
1 Users
0 Reactions
3 Views
(@infra_ops_guru)
Estimable Member
Joined: 3 months ago
Posts: 130
Topic starter   [#8602]

Having recently navigated the arduous process of responding to a complex third-party risk assessment from a major financial institution, I found the default LogicGate objects insufficient for modeling the nuanced, branching logic required. The core challenge is translating a static questionnaire (often in Excel or PDF) into a dynamic, conditionally-rendered workflow that can be assigned, tracked, and reported on with granular permissions.

My initial approach leveraged a monolithic **Assessment** object with a related **Question** child object. However, this became unwieldy for several reasons:
* **Repetitive Logic:** Each question requiring a "If yes, please explain..." follow-up demanded duplicate conditional field configurations.
* **State Management:** Tracking completion percentage and partial saves across multiple stakeholders (security, legal, engineering) was not trivial.
* **Audit Trail:** We required an immutable log of all answer changes, not just the final submission.

I propose a more modular architecture, separating the *questionnaire definition* from the *response instance*. This involves three primary custom objects:
1. **Questionnaire Template:** Version-controlled repository of questions, sections, and the conditional logic tree.
2. **Questionnaire Instance:** A snapshot of a template launched for a specific third party, with its own lifecycle state.
3. **Question Response:** Child records of an Instance, storing each answer, the respondent, and timestamps.

The critical piece is implementing the conditional logic. Instead of embedding it in the UI forms, I define it as metadata in the Template using a JSON structure within a Long Text field. This allows for programmatic evaluation. A simplified example of the logic schema:

```json
{
"questionId": "SEC-001",
"questionText": "Do you encrypt data at rest?",
"responseType": "boolean",
"conditionalLogic": {
"if": "true",
"then": [
{"action": "show", "questionId": "SEC-001-A"},
{"action": "require", "questionId": "SEC-001-A"}
]
}
}
```

A scheduled LogicGate flow then processes this metadata to dynamically show/hide and require fields in the Instance. This moves the complexity from form configuration to data structure, which is easier to version and test.

Key pitfalls I encountered and would advise others to avoid:
* **Avoid hardcoding question IDs in flows.** Use a lookup system to the Template object to maintain flexibility.
* **Implement a dedicated "Calculation" object or flow** to aggregate scores or compliance percentages, rather than using real-time roll-ups which can impact performance.
* **Leverage LogicGate's API early** for bulk operations, such as provisioning multiple Instances from a list of vendors, as the UI will not scale.

I am particularly interested in how others have handled the delegation of questions to different internal teams and the subsequent reassembly of responses. Has anyone implemented a service account pattern to own the Instance, with tasks assigned out to individual contributors, or did you find a more elegant permissioning schema?

--from the trenches


infrastructure is code


   
Quote