---
title: SAIF.Business.Claim.Authority operations and processes
summary: Operation catalog and cross-operation hub for the claim-authority financial authorization model.
status: draft
owner: Technical Writer
last_reviewed: 2026-07-30
library: SAIF.Business.Claim.Authority
reference_type: package
---

# SAIF.Business.Claim.Authority operations and processes

This page is the operation catalog and cross-operation hub for `SAIF.Business.Claim.Authority`. The library exposes six operations: loading and saving an employee's grant authority together with the two limit collections it governs (business function limits and reserve-category change limits), the amount/approval-type checks that back the limit rules' authority-ceiling validation, and the shared reference code lookups used throughout. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog

| Operation | Intent | Trigger | Inputs | Outputs | Rules | Tables | SQL |
| --- | --- | --- | --- | --- | --- | --- | --- |
| [Claim authority initialization](operations/claim-authority-initialization.md) | Load an employee's grant authority, business function limits, and category change limits, creating a default grant authority if none exists | `clsClaimAuthority.GetByMailID` / `GetByEmplID` for a business process | `EmplID`/`MailID`, `BusinessProcessCode` or `BusinessProcesses` enum | Populated `clsClaimAuthority` aggregate | [BR-002](business-rules.md#br-002-cannot-grant-authority-level-higher-than-own) | [CL_CLAIM_EMP_AUTH_TYPE](database-tables.md#cl_claim_emp_auth_type), [CL_CLAIM_EMP_BUS_FUNC_LIMIT](database-tables.md#cl_claim_emp_bus_func_limit), [CL_CLAIM_EMP_CAT_CHANGE_LIMIT](database-tables.md#cl_claim_emp_cat_change_limit) | [SQL-014](sql/SQL-014-saif-business-claim-authority.md), [SQL-015](sql/SQL-015-saif-business-claim-authority.md), [SQL-017](sql/SQL-017-saif-business-claim-authority.md) |
| [Claim authority save](operations/claim-authority-save.md) | Validate and persist a dirty grant authority together with any dirty limit rows, stamping the authorizing employee | Caller calls `clsClaimAuthority.Save()` after editing the aggregate | Dirty state of grant authority and limit collections; `AuthorizingEmployee.ID`; `IsSecurityOverride` | Persisted `CL_CLAIM_EMP_AUTH_TYPE` row; cascaded child saves; broken-rule errors | [BR-001](business-rules.md#br-001-mail-id-must-be-valid), [BR-002](business-rules.md#br-002-cannot-grant-authority-level-higher-than-own), [BR-012](business-rules.md#br-012-security-override-disabled-in-production) | [CL_CLAIM_EMP_AUTH_TYPE](database-tables.md#cl_claim_emp_auth_type) | [SQL-003](sql/SQL-003-saif-business-claim-authority.md), [SQL-018](sql/SQL-018-saif-business-claim-authority.md), [SQL-021](sql/SQL-021-saif-business-claim-authority.md) |
| [Business function limit maintenance](operations/business-function-limit-maintenance.md) | Retrieve and validate per-employee, per-business-function dollar limits before persisting | Retrieved via authority initialization; caller edits rows and calls `Save()` | `EmployeeEmplid`, `ClaimBusProcessCode`, `ClaimBusFunctionCode`, `ClaimAuthPurposeCode`, `MaxAmount`, `ExpDate` | Persisted `CL_CLAIM_EMP_BUS_FUNC_LIMIT` rows; broken-rule errors | [BR-003](business-rules.md#br-003-maximum-limit-must-be-greater-than-zero), [BR-004](business-rules.md#br-004-expiration-date-may-not-be-in-the-past), [BR-005](business-rules.md#br-005-cannot-grant-amount-exceeding-own-authority), [BR-006](business-rules.md#br-006-no-duplicate-functionapproval-type-combinations), [BR-007](business-rules.md#br-007-cannot-grant-approval-type-beyond-own-authority) | [CL_CLAIM_EMP_BUS_FUNC_LIMIT](database-tables.md#cl_claim_emp_bus_func_limit) | [SQL-001](sql/SQL-001-saif-business-claim-authority.md), [SQL-004](sql/SQL-004-saif-business-claim-authority.md), [SQL-015](sql/SQL-015-saif-business-claim-authority.md), [SQL-019](sql/SQL-019-saif-business-claim-authority.md), [SQL-022](sql/SQL-022-saif-business-claim-authority.md) |
| [Category change limit maintenance](operations/category-change-limit-maintenance.md) | Retrieve and validate per-employee reserve-category dollar limits before persisting | Retrieved via authority initialization; caller edits rows and calls `Save()` | `EmployeeEmplid`, `ClaimCostCategoryCode`, `ClaimAuthPurposeCode`, `MaxChangeAmount`, `ExpDate` | Persisted `CL_CLAIM_EMP_CAT_CHANGE_LIMIT` rows; broken-rule errors | [BR-008](business-rules.md#br-008-maximum-limit-must-be-greater-than-zero), [BR-009](business-rules.md#br-009-expiration-date-may-not-be-in-the-past), [BR-010](business-rules.md#br-010-cannot-grant-amount-exceeding-own-category-authority), [BR-013](business-rules.md#br-013-no-duplicate-categoryapproval-type-combinations), [BR-011](business-rules.md#br-011-cannot-grant-approval-type-beyond-own-category-authority) | [CL_CLAIM_EMP_CAT_CHANGE_LIMIT](database-tables.md#cl_claim_emp_cat_change_limit) | [SQL-002](sql/SQL-002-saif-business-claim-authority.md), [SQL-005](sql/SQL-005-saif-business-claim-authority.md), [SQL-016](sql/SQL-016-saif-business-claim-authority.md), [SQL-017](sql/SQL-017-saif-business-claim-authority.md), [SQL-020](sql/SQL-020-saif-business-claim-authority.md), [SQL-023](sql/SQL-023-saif-business-claim-authority.md) |
| [Authorization amount and approval-type checks](operations/authorization-amount-and-approval-checks.md) | Determine whether the authorizing employee's own limits cover a requested amount or approval type | Invoked internally by the limit-row validation rules | Business function or category code, authority purpose code, requested amount | Boolean amount/approval-type authorization result | Backs [BR-005](business-rules.md#br-005-cannot-grant-amount-exceeding-own-authority), [BR-007](business-rules.md#br-007-cannot-grant-approval-type-beyond-own-authority), [BR-010](business-rules.md#br-010-cannot-grant-amount-exceeding-own-category-authority), [BR-011](business-rules.md#br-011-cannot-grant-approval-type-beyond-own-category-authority) | [CL_CLAIM_EMP_BUS_FUNC_LIMIT](database-tables.md#cl_claim_emp_bus_func_limit), [CL_CLAIM_EMP_CAT_CHANGE_LIMIT](database-tables.md#cl_claim_emp_cat_change_limit) | None catalogued* |
| [Authority reference code lookups](operations/authority-reference-code-lookups.md) | Load and cache the business process, business function, and authority purpose/type code tables | Any read of a code object, collection, or cached code map | `IDataPortalInfo` only | Code business objects, collections, and cached enum-keyed code maps | None catalogued* | [CL_CLAIM_AUTH_PURPOSE_CODE](database-tables.md#cl_claim_auth_purpose_code), [CL_CLAIM_AUTH_TYPE_CODE](database-tables.md#cl_claim_auth_type_code), [CL_CLAIM_BUS_FUNCTION_CODE](database-tables.md#cl_claim_bus_function_code), [CL_CLAIM_BUS_PROCESS_CODE](database-tables.md#cl_claim_bus_process_code) | [SQL-006](sql/SQL-006-saif-business-claim-authority.md), [SQL-007](sql/SQL-007-saif-business-claim-authority.md), [SQL-008](sql/SQL-008-saif-business-claim-authority.md), [SQL-009](sql/SQL-009-saif-business-claim-authority.md), [SQL-010](sql/SQL-010-saif-business-claim-authority.md), [SQL-011](sql/SQL-011-saif-business-claim-authority.md), [SQL-012](sql/SQL-012-saif-business-claim-authority.md), [SQL-013](sql/SQL-013-saif-business-claim-authority.md) |

## Process flow diagram

The following diagram shows how the six operations relate: an employee's authority aggregate is initialized from reference codes and limit collections, the caller edits and validates the limits (which lean on the amount/approval-type checks), and a save cascades the grant authority and both limit collections together.

```mermaid
flowchart TD
	Start([Caller requests authority<br>for employee and business process]) --> Lookups[Authority reference<br>code lookups]
	Lookups --> Init[Claim authority initialization]
	Init --> GrantMissing{Grant authority exists?}
	GrantMissing -->|No| DefaultGrant[Seed default:<br>CanNotAuthorizeOthers]
	GrantMissing -->|Yes| LoadLimits
	DefaultGrant --> LoadLimits[Load business function<br>and category change limits]
	LoadLimits --> Edit[Caller edits grant authority<br>and/or limit rows]
	Edit --> BizEdit[Business function<br>limit maintenance]
	Edit --> CatEdit[Category change<br>limit maintenance]
	BizEdit --> Checks[Authorization amount and<br>approval-type checks]
	CatEdit --> Checks
	Checks --> Valid{IsValid?}
	Valid -->|No| Errors([Broken rules returned;<br>changes retained in memory])
	Valid -->|Yes| Save[Claim authority save]
	Save --> Rows{RowsAffected = 1<br>on every dirty child?}
	Rows -->|Yes| Done([Changes persisted])
	Rows -->|No| Contention([DB contention or insert<br>error added per child])
```

## Database interactions

The following table summarizes which operations read from or write to the database. Per-step SQL and table citations live in each operation's detail page under `operations/`.

| Operation | SQL | Tables | Type |
| --- | --- | --- | --- |
| [Claim authority initialization](operations/claim-authority-initialization.md) | [SQL-014](sql/SQL-014-saif-business-claim-authority.md), [SQL-015](sql/SQL-015-saif-business-claim-authority.md), [SQL-017](sql/SQL-017-saif-business-claim-authority.md) | [CL_CLAIM_EMP_AUTH_TYPE](database-tables.md#cl_claim_emp_auth_type), [CL_CLAIM_EMP_BUS_FUNC_LIMIT](database-tables.md#cl_claim_emp_bus_func_limit), [CL_CLAIM_EMP_CAT_CHANGE_LIMIT](database-tables.md#cl_claim_emp_cat_change_limit) | Read |
| [Claim authority save](operations/claim-authority-save.md) | [SQL-003](sql/SQL-003-saif-business-claim-authority.md), [SQL-018](sql/SQL-018-saif-business-claim-authority.md), [SQL-021](sql/SQL-021-saif-business-claim-authority.md) | [CL_CLAIM_EMP_AUTH_TYPE](database-tables.md#cl_claim_emp_auth_type) | Write |
| [Business function limit maintenance](operations/business-function-limit-maintenance.md) | [SQL-001](sql/SQL-001-saif-business-claim-authority.md), [SQL-004](sql/SQL-004-saif-business-claim-authority.md), [SQL-015](sql/SQL-015-saif-business-claim-authority.md), [SQL-019](sql/SQL-019-saif-business-claim-authority.md), [SQL-022](sql/SQL-022-saif-business-claim-authority.md) | [CL_CLAIM_EMP_BUS_FUNC_LIMIT](database-tables.md#cl_claim_emp_bus_func_limit) | Read / Write |
| [Category change limit maintenance](operations/category-change-limit-maintenance.md) | [SQL-002](sql/SQL-002-saif-business-claim-authority.md), [SQL-005](sql/SQL-005-saif-business-claim-authority.md), [SQL-016](sql/SQL-016-saif-business-claim-authority.md), [SQL-017](sql/SQL-017-saif-business-claim-authority.md), [SQL-020](sql/SQL-020-saif-business-claim-authority.md), [SQL-023](sql/SQL-023-saif-business-claim-authority.md) | [CL_CLAIM_EMP_CAT_CHANGE_LIMIT](database-tables.md#cl_claim_emp_cat_change_limit) | Read / Write |
| [Authorization amount and approval-type checks](operations/authorization-amount-and-approval-checks.md) | None catalogued* | [CL_CLAIM_EMP_BUS_FUNC_LIMIT](database-tables.md#cl_claim_emp_bus_func_limit), [CL_CLAIM_EMP_CAT_CHANGE_LIMIT](database-tables.md#cl_claim_emp_cat_change_limit) | Read (inline scalar, not catalogued) |
| [Authority reference code lookups](operations/authority-reference-code-lookups.md) | [SQL-006](sql/SQL-006-saif-business-claim-authority.md), [SQL-007](sql/SQL-007-saif-business-claim-authority.md), [SQL-008](sql/SQL-008-saif-business-claim-authority.md), [SQL-009](sql/SQL-009-saif-business-claim-authority.md), [SQL-010](sql/SQL-010-saif-business-claim-authority.md), [SQL-011](sql/SQL-011-saif-business-claim-authority.md), [SQL-012](sql/SQL-012-saif-business-claim-authority.md), [SQL-013](sql/SQL-013-saif-business-claim-authority.md) | [CL_CLAIM_AUTH_PURPOSE_CODE](database-tables.md#cl_claim_auth_purpose_code), [CL_CLAIM_AUTH_TYPE_CODE](database-tables.md#cl_claim_auth_type_code), [CL_CLAIM_BUS_FUNCTION_CODE](database-tables.md#cl_claim_bus_function_code), [CL_CLAIM_BUS_PROCESS_CODE](database-tables.md#cl_claim_bus_process_code) | Read |

## Failure and edge-case behavior

- Every persisting operation adds a DB-contention or insert-failure error message on a rows-affected value other than `1`, instead of throwing; callers must inspect `ErrorCount` after `Save()`. Detailed per-operation behavior is documented on each operation page.
- `IsSecurityOverride` can bypass the amount and approval-type ceilings enforced by [Authorization amount and approval-type checks](operations/authorization-amount-and-approval-checks.md), but the property setter forces it back to `False` whenever the environment is production ([BR-012](business-rules.md#br-012-security-override-disabled-in-production)).
- A missing grant-authority row is not treated as an error during initialization — the object is seeded in-memory with the most restrictive authority level rather than failing.
- The inline scalar queries behind the amount and approval-type checks are not individually cataloged as `SQL-*` documents in this library's SQL catalog, unlike the CRUD statements used by the other five operations.*
- Authorization decisions depend on live Oracle code-table and limit-row data; changes to that data change authorization outcomes without any code change in this library.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Business rules](business-rules.md)
- [Database tables](database-tables.md)
- [SQL catalog](sql/index.md)
- [API reference](api/index.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts.

## Sources
- `Business\SAIF.Business.Claim.Authority\clsClaimAuthority.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimEmpAuthType.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimEmpBusFuncLimit.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimEmpBusFuncLimitCollection.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimEmpCatChangeLimit.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimEmpCatChangeLimitCollection.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimAuthPurposeCode.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimAuthPurposeCodeCollection.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimAuthTypeCode.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimAuthTypeCodeCollection.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimBusFunctionCode.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimBusFunctionCodeCollection.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimBusProcessCode.vb`
- `Business\SAIF.Business.Claim.Authority\clsClaimBusProcessCodeCollection.vb`
- `Business\SAIF.Business.Claim.Authority\mdlClaimAuthority.vb`
