---
title: ClaimContactService
summary: API reference for ClaimContactService.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-24
library: SAIF.Services
reference_type: package
---

# ClaimContactService

Implements `IClaimContactService`, resolving role-specific claim contacts (responsible adjuster, claims assistant, supervisor, vocational adjuster, third-party adjuster, return-to-work adjuster, policy safety-management consultant) by combining claim responsibility/case data from `IClaimQueryProvider` with directory lookups via `IUserProfileService`. It duplicates the same resolution logic found in `ContactsNodeBuilder` but exposes it as a standalone, injectable service rather than a fluent per-claim builder.

## Purpose
- Resolves the claim's responsible adjuster contact, filling in pseudo-user phone/name when the responsibility has no directory mail ID.
- Resolves the claims assistant contact from the claim responsibility record.
- Resolves the claim supervisor contact, using the adjuster's organizational manager for secure claims and the stored responsibility supervisor otherwise.
- Resolves vocational adjuster, third-party adjuster, return-to-work adjuster, and policy safety-management-consultant contacts from their respective claim/case lookups.
- Resolves an adjuster's location via `GetAdjusterLocation`-style lookup based on a `ClaimResponsibility`.

## Context
- Namespace: `SAIF.Services.Claims.Information`
- Assembly/package: `SAIF.Services` (packaged inside the `SAIF.SAIFCode.Core` NuGet package)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| ClaimContactService(profile, claimQuery) | `public ClaimContactService(IUserProfileService profile, IClaimQueryProvider claimQuery)` | Stores the user-profile service and claim query provider used by all contact-resolution methods. |
| GetResponsibleAdjuster(claimId) | `public ContactItem GetResponsibleAdjuster(long claimId)` | Returns the adjuster contact for the claim's responsibility record, with pseudo-user phone/name fallback, or an empty `ContactItem` if no responsibility/identifier exists. |
| GetClaimsAssistant(claimId) | `public ContactItem GetClaimsAssistant(long claimId)` | Returns the "Claim assistant" contact resolved from the responsibility record's claim-assistant mail ID, or an empty `ContactItem` if none is set. |
| GetSupervisor(claimId) | `public ContactItem GetSupervisor(long claimId)` | Returns the "Claim supervisor" contact — the adjuster's manager for secure claims (worker has a hostile-worker code), otherwise the responsibility's stored supervisor (skipped if the supervisor is the same person as the adjuster). |
| GetVocationAdjuster(claimId) | `public ContactItem GetVocationAdjuster(long claimId)` | Returns the "Voc Coordinator" contact from the claim's vocational responsibility, falling back to the raw user ID as the formatted name when no directory name is found. |
| GetThirdPartyAdjuster(claimId) | `public ContactItem GetThirdPartyAdjuster(long claimId)` | Returns the "3rd Party" contact resolved from the claim's third-party case adjuster user name, or an empty `ContactItem` if none exists. |
| GetRtwAdjuster(claimId) | `public ContactItem GetRtwAdjuster(long claimId)` | Returns the "Return to work" contact resolved from the claim's active RTW load assignment (the first assignment with no expiration date), or an empty `ContactItem` if none is active. |
| GetPolicySmcContact(claimId) | `public ContactItem GetPolicySmcContact(long claimId)` | Returns the "Safety Mgt Consultant" contact resolved from the claim's policy safety-management-consultant team function. |
| GetUserContactInfo(mailId) | `public ContactItem GetUserContactInfo(string mailId)` | Resolves a mail ID to a `ContactItem`, preferring the SAIF employee directory (`GetSaifUser`) and falling back to application user records (`GetApplicationUser`); returns an empty `ContactItem` if neither resolves. |

## Behavioral notes
- Secure-claim detection for `GetSupervisor` is based on whether the claim worker's `HostileWorker.Code` (trimmed) is non-empty.
- Each `Get*` method returns an empty `ContactItem` rather than `null` when the underlying data is missing, keeping the API null-safe for callers.

## Constraints and usage notes
- `GetUserContactInfo` lower-cases the mail ID before the SAIF-user lookup but not before the application-user fallback lookup.

## Sources
- Services/SAIF.Services/Claims/Information/ClaimContactService.cs
