---
title: SAIF.Application.Services.AudioVideo operations and processes
summary: Business and technical operations supported by this library.
status: draft
owner: <owner>
last_reviewed: 2026-09-15
library: SAIF.Application.Services.AudioVideo
reference_type: package
---

# SAIF.Application.Services.AudioVideo 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 |
| --- | --- | --- | --- | --- | --- |
| [Import a call recording from CallRex](operations/import-recording.md) | Import a call recording from the CallRex vendor system into SAIF, including persistence, file backup/transcode, and vendor cleanup. | External caller invokes `IAudioVideoService.ImportRecording`. | `ImportAudioRequest` | `RecordingInfo` | [BR-AV-01](business-rules.md#br-av-01-currentuserid-required)–[BR-AV-09](business-rules.md#br-av-09-import-requires-vendor-deletion) |
| [Invalidate a call recording](operations/invalidate-recording.md) | Mark a recording invalid without deleting vendor-side data. | External caller invokes `IAudioVideoService.InvalidateRecording`. | `CallRecording` | None (void) | [BR-AV-10](business-rules.md#br-av-10-invalidate-annotates-vendor-description) |
| [Cancel an in-progress import](operations/cancel-import.md) | Clear the local import-status row for a recording. | External caller invokes `IAudioVideoService.CancelImport`. | `Guid callRecordingId` | None (void) | — |
| [Look up recording information](operations/get-recording-info.md) | Retrieve persisted recording metadata by vendor call ID. | External caller invokes `IAudioVideoService.GetRecordingInfo`. | `Guid callRecordingId` | `RecordingInfo` or `null` | — |
| [Check whether a claim has recorded media](operations/has-media.md) | Existence check for a claim's recordings; available in degraded mode. | External caller invokes `IAudioVideoService.HasMedia`. | `long claimId` | `bool` | — |
| [Mark an import status errored](operations/mark-import-status-errored.md) | Force a recording's import status to Errored. | External caller invokes `AudioVideoService.MarkImportStatusErrored`. | `Guid callRecordingId`, optional `string reason` | None (void) | — |
| [Real-time call-state monitoring](operations/real-time-call-state-monitoring.md) | Subscribe to or poll live agent/call-state updates from CallRex. | External caller invokes `CallRecordingSystem.StartMonitoring`/`StopMonitoring`/`GetAllUsersCurrentCallState`. | `CallUser` | `OnCallStateChanged` events or `IEnumerable<CallMonitorState>` | — |

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

```mermaid
flowchart TD
	Start([External caller]) --> Import[Import a call recording]
	Start --> Invalidate[Invalidate a call recording]
	Start --> Cancel[Cancel an in-progress import]
	Start --> Lookup[Look up recording information]
	Start --> HasMedia[Check whether a claim has recorded media]
	Start --> MarkErrored[Mark an import status errored]
	Start --> Monitor[Real-time call-state monitoring]
	Import --> Decision{Vendor delete succeeds?}
	Decision -->|Yes| Complete([Import status: Completed])
	Decision -->|No| Errored([Import status: Errored])
```

## Database interactions

The following table summarizes which operations read from or write to the database.

| Operation | Tables | Type |
| --- | --- | --- |
| [Import a call recording from CallRex](operations/import-recording.md) | `RECORDING`, `audio_import_status` | Read/Write |
| [Invalidate a call recording](operations/invalidate-recording.md) | `audio_import_status` | Write (delete) |
| [Cancel an in-progress import](operations/cancel-import.md) | `audio_import_status` | Write (delete) |
| [Look up recording information](operations/get-recording-info.md) | `RECORDING` | Read |
| [Check whether a claim has recorded media](operations/has-media.md) | `RECORDING` | Read |
| [Mark an import status errored](operations/mark-import-status-errored.md) | `audio_import_status` | Write (upsert) |
| [Real-time call-state monitoring](operations/real-time-call-state-monitoring.md) | None | — |

<!-- No database-tables.md/sql/index.md exist for this library, so per-table/SQL anchors are not linked; the analysis identified table names and SQL IDs (SQL-AV-01 through SQL-AV-07) but this run did not produce database-tables.md or sql/index.md for this library. -->

## Failure and edge-case behavior
- Every operation gated by `_enableServicesFlag` throws `NotImplementedException` when `AudioVideoService` is constructed via its degraded constructor (`AudioVideoService(IUnitOfWork uow)`); only [Check whether a claim has recorded media](operations/has-media.md) is exempt.
- [Import a call recording from CallRex](operations/import-recording.md) rolls back its own database row on most failures but does **not** roll back on a vendor-delete failure after a successful local import ([BR-AV-09](business-rules.md#br-av-09-import-requires-vendor-deletion)).
- [Real-time call-state monitoring](operations/real-time-call-state-monitoring.md) uses an unsecured duplex transport (`WSDualHttpBinding`, security mode `None`).

## 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
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\AudioVideoService.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\ImportStatusManager.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\Utilities\AudioVideo\RecordingSystem.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\CallRexServiceProxy.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\CallRexStateServiceProxy.cs`
- `Application\SAIF.Application.Services.AudioVideo\Services\ClientProxies\ThirdParty\AgentStateCallback.cs`
