---
title: SAIF.NetCore.Clients.UC4 operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: SAIF Framework Platform Team
last_reviewed: 2026-10-02
library: SAIF.NetCore.Clients.UC4
reference_type: package
---

# SAIF.NetCore.Clients.UC4 operations and processes

This page is the operation catalog and cross-operation hub for this library. Each operation's detailed, step-by-step logic lives in its own page under `operations/`.

## Operation catalog
| Operation | Intent | Trigger | Inputs | Outputs | Rules |
| --- | --- | --- | --- | --- | --- |
| [Construct UC4 client](operations/op-uc4-01-construct-client.md) | Validate that the environment can run UC4 scheduling and cache the base URL and route | DI container resolves `IUC4Client`, or a caller runs `new UC4Client(env, http)` | `IEnvironmentClient`, `IHttpJsonClient` | A constructed `UC4Client` with `ServiceUrl`, `ScheduleJobEndpoint`, `ClientName` populated and `IsConfigured = false` | [BR-UC4-01](business-rules.md#br-uc4-01-required-settings-must-exist-at-construction), [BR-UC4-02](business-rules.md#br-uc4-02-settings-existence-is-validated-independently-of-value-content), [BR-UC4-04](business-rules.md#br-uc4-04-caller-identity-is-sent-via-fixed-and-caller-supplied-headers) |
| [Schedule a UC4 job](operations/op-uc4-02-schedule-job.md) | Start a named UC4/Automic job | Consumer calls `await client.ScheduleJob(appname, jobname)` | `appname`, `jobname` | `Task<IHttpRequestResult>` | [BR-UC4-03](business-rules.md#br-uc4-03-job-scheduling-url-is-built-by-direct-string-concatenation), [BR-UC4-06](business-rules.md#br-uc4-06-client-identity-is-fixed-on-first-use), [BR-UC4-08](business-rules.md#br-uc4-08-scheduling-requests-retry-automatically-on-specific-transient-status-codes), [BR-UC4-09](business-rules.md#br-uc4-09-scheduling-failures-are-returned%2C-not-thrown), [BR-UC4-10](business-rules.md#br-uc4-10-scheduled-jobs-start-with-an-empty-json-object) |

## Process flow diagram
The following diagram visualizes the primary operational flow across both operations.

```mermaid
flowchart TD
	Start([Caller resolves or constructs IUC4Client]) --> Construct[Construct UC4 client]
	Construct --> CheckKeys{uc4coreapi:url and<br>uc4coreapi:schedulejobroute exist?}
	CheckKeys -->|No| Abort([NotSupportedException])
	CheckKeys -->|Yes| Ready(["Client ready, IsConfigured=false"])
	Ready --> Schedule[Schedule a UC4 job]
	Schedule --> FirstCall{IsConfigured == false?}
	FirstCall -->|Yes| Init["Init: SetClientInfo"]
	FirstCall -->|No| Post["POST empty JSON object {} to route+jobname"]
	Init --> Post
	Post --> Result([Return IHttpRequestResult to caller])
```

## Failure and edge-case behavior
- A missing `uc4coreapi:url` or `uc4coreapi:schedulejobroute` key aborts construction with `NotSupportedException`; the client cannot be resolved from DI in that environment ([BR-UC4-01](business-rules.md#br-uc4-01-required-settings-must-exist-at-construction)).
- An empty (but present) `uc4coreapi:url` passes construction and fails only at the first `ScheduleJob` call, with `UriFormatException` ([BR-UC4-02](business-rules.md#br-uc4-02-settings-existence-is-validated-independently-of-value-content)).
- An externally-set `IsConfigured = true` before the first call skips `Init`, which can surface later as `ClientNotInitializedException` from the underlying `HttpJsonClient` ([BR-UC4-07](business-rules.md#br-uc4-07-isconfigured-has-a-public-setter-that-bypasses-initialization)).
- A non-success HTTP response (including after automatic retries on 401/502/503) is returned to the caller as `IHttpRequestResult.IsSuccessful = false`, never thrown ([BR-UC4-09](business-rules.md#br-uc4-09-scheduling-failures-are-returned%2C-not-thrown)).

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Configuration](configuration.md)
- [Business rules](business-rules.md)
- [API reference](api/index.md)

## Sources
- `src/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4.csproj`
- `src/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/Constants.cs`
- `src/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/IUC4Client.cs`
- `src/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/SAIF.NetCore.Clients.UC4/Services/UC4Client.cs`
