> ## Documentation Index
> Fetch the complete documentation index at: https://docs.frankieone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interpreting Workflows

> A developer's guide to parsing the workflowResult object, from the overall status down to the granular details of each step.

## Understanding the Workflow Response

After executing a workflow, the API returns a comprehensive `workflowResult` object. This object is the key to understanding the outcome of every step performed. This guide provides a structured, top-down walkthrough of how to parse this response, explaining each key object from the final verdict down to the granular evidence.

<Accordion title="View Full API Response Example">
  The examples in this guide refer to the following API response for workflow execution `01K4XQGV10NY0Q3SE0F73H9TJX`. Click to expand and see the full structure.

  ```json theme={null}
  {
      "organization": {
          "entityId": "99f16410-2613-4181-8cf1-048625900013",
          "details": { "name": "Frankie One", "registrationDetails": [ ... ] },
          "...": "..."
      },
      "requestId": "01JZHEX0WX2QEM6EY139D5NNP1",
      "workflowResult": {
          "createdAt": "2025-09-12T01:09:31.804846Z",
          "endedAt": "2025-09-12T01:09:36.912755Z",
          "entityId": "01993700-edfb-766f-98d2-9fe470d78825",
          "entityType": "ORGANIZATION",
          "issues": [],
          "lifecyclePhase": "ONBOARDING",
          "monitoringTypes": [],
          "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
          "result": "COMPLETE",
          "riskAssessment": {
              "createdAt": "2025-09-12T01:09:31.857427Z",
              "entityId": "01993700-edfb-766f-98d2-9fe470d78825",
              "riskAssessmentId": "56adfe52-cdcb-414e-9819-a541953a5858",
              "riskFactors": [
                  {
                      "createdAt": "2025-09-11T04:20:59.47008Z",
                      "description": "Organization Type",
                      "factor": "organization_type",
                      "riskFactorId": "be53f30a-d1fe-4264-aec7-c798444c391d",
                      "score": 30,
                      "status": "VALID",
                      "updatedAt": "2025-09-11T04:20:59.47008Z",
                      "updatedRequestId": "01K4VG2EVV6YJEQFEWZNR4RRY7"
                  }
              ],
              "riskScore": 30,
              "serviceProfileId": "081f345f-0919-4a60-8f23-e84cdd8bcf11",
              "updatedAt": "2025-09-12T01:09:37.095762Z",
              "updatedRequestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
              "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX",
              "workflowId": "62758fca-6e95-424e-85ae-2d246bb45d92",
              "workflowRiskLevel": "LOW",
              "workflowRiskScore": 30
          },
          "schemaVersion": 2,
          "serviceProfileId": "081f345f-0919-4a60-8f23-e84cdd8bcf11",
          "startedAt": "2025-09-12T01:09:31.804846Z",
          "status": "COMPLETE",
          "statusOverrideAt": "0001-01-01T00:00:00Z",
          "statusOverrideBy": "",
          "statusOverrideRequestId": "",
          "steps": {
              "failed": [],
              "incomplete": [],
              "notApplicable": [],
              "order": [
                  "START",
                  "ORGANIZATION_DATA_FETCH",
                  "ORGANIZATIONPERSIST",
                  "DECISION",
                  "FINISH"
              ],
              "passed": [
                  "START",
                  "ORGANIZATION_DATA_FETCH",
                  "ORGANIZATIONPERSIST",
                  "DECISION",
                  "FINISH"
              ]
          },
          "updatedAt": "2025-09-12T01:09:37.258784Z",
          "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX",
          "workflowExecutionState": "COMPLETED",
          "workflowId": "62758fca-6e95-424e-85ae-2d246bb45d92",
          "workflowName": "GLB-Organization-Ownership",
          "workflowStepResults": [
              {
                  "createdAt": "2025-09-12T01:09:36.891039Z",
                  "endedAt": "2025-09-12T01:09:36.912755Z",
                  "objectId": "01993700-edfb-766f-98d2-9fe470d78825",
                  "objectType": "ORGANIZATION",
                  "processResults": [],
                  "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
                  "result": "COMPLETE",
                  "risk": {
                      "contributedScore": 0,
                      "level": "LOW",
                      "overallScore": 30
                  },
                  "schemaVersion": 2,
                  "startedAt": "2025-09-12T01:09:36.884705Z",
                  "stepName": "FINISH",
                  "stepResultId": "01K4XQGZZV1HK6RRYRPEK9HH1X",
                  "summary": {
                      "stepName": "FINISH",
                      "workflowContextId": "2e7b0cc9-0545-4399-a89a-303c63243fde"
                  },
                  "updatedAt": "2025-09-12T01:09:37.233237Z",
                  "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX"
              },
              {
                  "createdAt": "2025-09-12T01:09:36.560444Z",
                  "endedAt": "2025-09-12T01:09:36.584254Z",
                  "objectId": "01993700-edfb-766f-98d2-9fe470d78825",
                  "objectType": "ORGANIZATION",
                  "processResults": [],
                  "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
                  "result": "COMPLETE",
                  "schemaVersion": 2,
                  "startedAt": "2025-09-12T01:09:36.54998Z",
                  "stepName": "DECISION",
                  "stepResultId": "01K4XQGZNGJC9KSH3BJ5GWHDZ2",
                  "summary": {
                      "stepName": "DECISION",
                      "workflowExecutionResult": "COMPLETE"
                  },
                  "updatedAt": "2025-09-12T01:09:36.732859Z",
                  "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX"
              },
              {
                  "createdAt": "2025-09-12T01:09:34.533563Z",
                  "endedAt": "2025-09-12T01:09:36.125729Z",
                  "objectId": "01993700-edfb-766f-98d2-9fe470d78825",
                  "objectType": "ORGANIZATION",
                  "processResults": [],
                  "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
                  "result": "COMPLETE",
                  "risk": {
                      "contributedScore": 30,
                      "level": "LOW",
                      "overallScore": 30
                  },
                  "schemaVersion": 2,
                  "startedAt": "2025-09-12T01:09:34.527693Z",
                  "stepName": "ORGANIZATIONPERSIST",
                  "stepResultId": "01K4XQGXP5505XGKTZKJWQZAPQ",
                  "summary": {
                      "stepName": "ORGANIZATION_PERSIST"
                  },
                  "updatedAt": "2025-09-12T01:09:36.381606Z",
                  "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX"
              },
              {
                  "createdAt": "2025-09-12T01:09:32.467337Z",
                  "endedAt": "2025-09-12T01:09:33.724934Z",
                  "objectId": "01993700-edfb-766f-98d2-9fe470d78825",
                  "objectType": "ORGANIZATION",
                  "processResults": [
                      {
                          "class": "ORGANIZATION_PROFILE",
                          "createdAt": "2025-09-11T04:20:56.176612Z",
                          "entityId": "01993700-edfb-766f-98d2-9fe470d78825",
                          "objectType": "ORGANIZATION",
                          "processResultId": "01K4VG2K7GQ0FPQE1FSNRPWM53",
                          "providerResult": {
                              "name": "ABR",
                              "source": "ABR",
                              "sourceNormalized": "ABR"
                          },
                          "requestId": "01K4VG2EVV6YJEQFEWZNR4RRY7",
                          "result": "CREATED",
                          "schemaVersion": 2,
                          "state": "COMPLETED",
                          "stepName": "ORGANIZATION_DATA_FETCH",
                          "stepType": "ORGANIZATION_PROFILE",
                          "supplementaryData": {
                              "organization": {
                                  ...
                              },
                              "type": "KYB_ORGANIZATION"
                          },
                          "systemStatus": "VALID",
                          "updatedAt": "2025-09-11T04:20:56.176612Z"
                      },
                      {
                          "class": "ORGANIZATION_OWNERSHIP",
                          "createdAt": "2025-09-12T01:09:33.705433Z",
                          "entityId": "01993700-edfb-766f-98d2-9fe470d78825",
                          "objectType": "ORGANIZATION",
                          "processResultId": "01K4XQGWW9DN9H4YZF6XKK7T44",
                          "providerResult": {
                              "name": "CREDITOR_WATCH",
                              "reference": "2f3b7f30-ca8d-11eb-816f-0242ac11001b",
                              "source": "ASIC",
                              "sourceNormalized": "ASIC"
                          },
                          "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
                          "result": "CREATED",
                          "schemaVersion": 2,
                          "state": "COMPLETED",
                          "stepName": "ORGANIZATION_DATA_FETCH",
                          "stepType": "ORGANIZATION_OWNERSHIP",
                          "supplementaryData": {
                              "organization": {
                                  ...
                              },
                              "type": "KYB_ORGANIZATION"
                          },
                          "systemStatus": "VALID",
                          "updatedAt": "2025-09-12T01:09:33.705433Z"
                      }
                  ],
                  "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
                  "result": "COMPLETE",
                  "schemaVersion": 2,
                  "startedAt": "2025-09-12T01:09:32.457875Z",
                  "stepName": "ORGANIZATION_DATA_FETCH",
                  "stepResultId": "01K4XQGVNKJBAKMCSQ3RFE2358",
                  "summary": {
                      "provider": "CREDITORWATCH",
                      "stepName": "ORGANIZATION_DATA_FETCH"
                  },
                  "updatedAt": "2025-09-12T01:09:33.850884Z",
                  "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX"
              },
              {
                  "createdAt": "2025-09-12T01:09:31.937737Z",
                  "endedAt": "2025-09-12T01:09:31.979769Z",
                  "objectId": "01993700-edfb-766f-98d2-9fe470d78825",
                  "objectType": "ORGANIZATION",
                  "processResults": [],
                  "requestId": "01K4XQGPNYVR9PDCZ5ESW264V3",
                  "result": "COMPLETE",
                  "risk": {
                      "contributedScore": 30,
                      "level": "LOW",
                      "overallScore": 30
                  },
                  "schemaVersion": 2,
                  "startedAt": "2025-09-12T01:09:31.927456Z",
                  "stepName": "START",
                  "stepResultId": "01K4XQGV515Y9RMX9G9T85AGR3",
                  "summary": {
                      "stepName": "START",
                      "workflowContextId": "2e7b0cc9-0545-4399-a89a-303c63243fde",
                      "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX"
                  },
                  "updatedAt": "2025-09-12T01:09:32.197792Z",
                  "workflowExecutionId": "01K4XQGV10NY0Q3SE0F73H9TJX"
              }
          ]
      }
  }
  ```
</Accordion>

***

## Part 1: The Overall Outcome (The Final Verdict)

Start by examining the top-level fields of the `workflowResult` object. These provide the final, authoritative outcome of the entire workflow execution.

| Field Name               | Importance | Description                                                                                                                                                |
| :----------------------- | :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status`                 | ‼️         | It represents the conclusive recommendation and accounts for any manual overrides.                                                                         |
| `workflowExecutionState` | ‼️         | This confirms the workflow's technical status. It **must be `COMPLETED`** for the `status` to be considered final and to review the `organization` object. |
| `result`                 | ⚠️         | This field holds the original, automated outcome of the workflow *before* any manual changes. It is useful for auditing.                                   |
| `issues`                 | ⚠️         | An array of problems that may require manual review. If the `status` is `REVIEW`, this array will contain the specific reasons why.                        |

### Workflow Execution States (`workflowExecutionState`)

This field tells you if the workflow ran to completion.

| State         | Description                                                           |
| :------------ | :-------------------------------------------------------------------- |
| `COMPLETED`   | The workflow executed successfully from start to finish.              |
| `IN_PROGRESS` | The workflow is still running.                                        |
| `ERROR`       | The workflow encountered an unrecoverable error and could not finish. |
| `TIMEOUT`     | The workflow exceeded its maximum execution time.                     |
| `CANCELED`    | The workflow was manually canceled before completion.                 |
| `TERMINATED`  | The workflow was terminated by the system before completion.          |

### Workflow Statuses (`status` and `result`)

This is the final recommendation of the workflow.

| Status                    | Description                                                                                    |
| :------------------------ | :--------------------------------------------------------------------------------------------- |
| `PASS`                    | The entity successfully met the workflow's criteria.                                           |
| `FAIL`                    | The entity did not meet the workflow's criteria.                                               |
| `REVIEW`                  | The workflow produced results that require manual review.                                      |
| `CLEAR`                   | Often used for monitoring, indicates no negative information was found.                        |
| `HIT`                     | Often used for monitoring, indicates negative information (e.g., a watchlist match) was found. |
| `URGENT`                  | A critical issue was found (e.g., a sanctions match) that requires immediate attention.        |
| `COMPLETE` / `INCOMPLETE` | The workflow finished, but a pass/fail determination was not applicable.                       |

### Detecting Manual Overrides

It's crucial to know if a workflow's result was changed by a person. When an operator manually changes the `status` (e.g., from `FAIL` to `PASS`), the following fields are populated:

* `statusOverrideRequestId`: The unique ID of the override request.
* `statusOverrideBy`: The user who performed the override.
* `statusOverrideAt`: The timestamp of the override.

**To detect an override, check if `statusOverrideRequestId` exists and is not empty.**

***

## Part 2: The Step-by-Step Breakdown (`workflowStepResults`)

The `workflowStepResults` array is a log of each step in the workflow, explaining *how* the overall `status` was reached. Each object in this array corresponds to a step configured in your workflow (e.g., KYC, AML, IDV).

| Field Name       | Description                                                                                        |
| :--------------- | :------------------------------------------------------------------------------------------------- |
| `stepName`       | The name of the step (e.g., `ORGANIZATION_DATA_FETCH`, `AML`).                                     |
| `result`         | The outcome of this specific step. See the table below for all possible values.                    |
| `summary`        | A concise, human-readable summary of the step's outcome.                                           |
| `processResults` | An array of Process Result Objects (PROs) providing the granular evidence for this step's result.  |
| `risk`           | The risk assessment specific to this step, including the score it contributed to the overall risk. |

### Workflow Step Results (`result`)

| Result                | Description                                                                                                   |
| :-------------------- | :------------------------------------------------------------------------------------------------------------ |
| PARTIAL               | The step produced a successful, unsuccessful, or partially successful match against data sources.             |
| CLEAR / HIT           | Indicates no negative information found (CLEAR) or negative information found (HIT), e.g., a watchlist match. |
| PASS / FAIL           | The step completed and met (PASS) or did not meet (FAIL) its required criteria.                               |
| COMPLETE / INCOMPLETE | The step finished, but a pass/fail scenario was not applicable.                                               |
| SKIPPED               | The step was skipped because it was not required to run.                                                      |
| MISSING\_DATA         | The step could not run because it requires additional data.                                                   |
| ERROR                 | The step encountered an unrecoverable technical error.                                                        |

***

## Part 3: The Granular Evidence (`processResults`)

For the deepest level of detail, look inside a `workflowStepResult` at its `processResults` array. A **Process Result Object (PRO)** is the raw evidence from a single check against a single data source.

| Field Name          | Description                                                                                                                                                                |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `processResultId`   | A unique identifier for this specific piece of evidence.                                                                                                                   |
| `class`             | The high-level category of the step. See the table below for details.                                                                                                      |
| `objectType`        | The specific data element that was checked.                                                                                                                                |
| `result`            | The outcome of this specific step (e.g., `MATCH`, `HIT`, `CLEAR`).                                                                                                         |
| `providerResult`    | An object containing details from the downstream data provider, including the `source` of the data.                                                                        |
| `systemStatus`      | The lifecycle status of this PRO (e.g., `VALID`, `STALE`, `MARKED_INVALID`). A `STALE` status means the underlying entity data has changed since this check was performed. |
| `manualStatus`      | If an operator has manually reviewed this specific PRO, their conclusion (e.g., `TRUE_POSITIVE`, `FALSE_POSITIVE`) is recorded here.                                       |
| `supplementaryData` | A rich, context-specific object containing detailed metrics, like AML hits or extracted organization data.                                                                 |

### Process Result Classes (`class`)

| Class                    | Description                                                                      |
| :----------------------- | :------------------------------------------------------------------------------- |
| `ORGANIZATION_OWNERSHIP` | Organization ownership data fetched from a data source.                          |
| `ORGANIZATION_PROFILE`   | Organization profile data fetched from a data source.                            |
| `AML`                    | An Anti-Money Laundering screening against watchlists, sanctions, and PEP lists. |

## Best Practices for Integration

* **Check `workflowExecutionState` first**: Always confirm the workflow is `COMPLETED` before trusting the `status` and the returned `organization` object.
* **Debug with `workflowStepResults`**: When you get an unexpected `FAIL` or `REVIEW`, loop through the `workflowStepResults` to find which `stepName` has a non-passing `result`. The `summary` and `processResults` within that step will tell you why.
* **Log the `workflowExecutionId`**: This ID is your key for auditing, support queries, and correlating results.

## References

For more details on specific `workflowResult` objects, please refer to our Features section.

* [Interpreting AML Results](/docs/kyb/anti-money-laundering-results)
