> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://cla-demo.postmansolutions.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://cla-demo.postmansolutions.com/_mcp/server.

# Job Tracking---ERD

## Table: \[extractor].\[Job]

| Column Name                  | Data Type        | Description                                                  |
| ---------------------------- | ---------------- | ------------------------------------------------------------ |
| JobID                        | UNIQUEIDENTIFIER | Primary key                                                  |
| FileId                       | UNIQUEIDENTIFIER | Foreign key to \[fileintake].\[File].FileID                  |
| ClientApplicationExtractorID | UNIQUEIDENTIFIER | Foreign key to \[registration].\[ClientApplicationExtractor] |
| Status                       | VARCHAR(50)      | Current job status (e.g. Queued, Started, Succeeded, Failed) |
| StatusMessage                | VARCHAR(MAX)     | Optional info or error message                               |
| ExtractorResponse            | NVARCHAR(MAX)    | Optional raw response data                                   |
| PollAttemptCount             | INT              | Number of polling attempts                                   |
| LastPollAttemptAt            | DATETIMEOFFSET   | Timestamp of last poll                                       |
| IsActive                     | BIT              | Soft delete flag                                             |
| CreatedAt                    | DATETIMEOFFSET   | Job creation timestamp                                       |
| UpdatedAt                    | DATETIMEOFFSET   | Last updated timestamp                                       |
| CompletedAt                  | DATETIMEOFFSET   | Job completion timestamp                                     |

---

## Table: \[extractor].\[JobStatus]

| Column Name   | Data Type        | Description                                         |
| ------------- | ---------------- | --------------------------------------------------- |
| JobStatusID   | UNIQUEIDENTIFIER | Primary key                                         |
| JobID         | UNIQUEIDENTIFIER | Foreign key to \[extractor].Job                     |
| Status        | VARCHAR(50)      | Status observed at time of polling or system update |
| Message       | VARCHAR(MAX)     | Optional detail (error, log, etc.)                  |
| AttemptNumber | INT              | Poll attempt number (if applicable)                 |
| Timestamp     | DATETIMEOFFSET   | When this status event occurred                     |

---

## Relationships

| From Table                | From Column                  | To Table                                      | To Column                    |
| ------------------------- | ---------------------------- | --------------------------------------------- | ---------------------------- |
| \[extractor].\[Job]       | FileId                       | \[file].\[File]                               | FileID                       |
| \[extractor].\[Job]       | ClientApplicationExtractorID | \[registration].\[ClientApplicationExtractor] | ClientApplicationExtractorID |
| \[extractor].\[JobStatus] | JobID                        | \[extractor].\[Job]                           | JobID                        |

---

## Blob Storage Convention (for Extractor Results)

* Storage Location: Azure Blob Container
* Folder Path Pattern:

```
/results/{ClientApplicationId}/{FileId}/{JobId}/result.json
```

* `result.json` contains raw output from the external extractor