Skip to content

Operational runbook

This host is deployed to IIS in two variants — Internal and External — from one codebase and one route table; operators verify reachability with a WSDL fetch or a lightweight read-only call, and every failure surfaces to the caller as a detailed SOAP fault rather than an HTTP status code.

Deployment

Attribute Value
Host IIS
Site / virtual directory Development root http://localhost/wcf; deployed addresses are set by the release pipeline and not present in this repository
Application pool Identity $(wcf.svc.username)/$(wcf.svc.password) from Architecture.ServiceAccounts.IIS; .NET version not determined from source
Platform target x64
Build configurations Release (Internal), ReleaseExternal (External)
Deployment mechanism pipelines/build.yml builds both artifacts; pipelines/release.yml deploys them with independent DeployInternal/DeployExternal switches
Artifacts app-internal, app-external

Environments and variants

Environment Variant Base address Environment track Notes
DEV Internal Not determined from source DEV Both deployment variants exist in every environment tier per pipelines/release.yml's switches
DEV External Not determined from source DEV See above
TEST Internal Not determined from source TEST See above
TEST External Not determined from source TEST See above
PROD Internal Not determined from source PROD See above
PROD External Not determined from source PROD See above

The variant-to-transform mapping is on Activation and hosting and agrees with this table: Release/Web.Release.config produces the Internal artifact, ReleaseExternal/Web.ReleaseExternal.config produces the External artifact.

Health verification

Check Request Expected result
Service metadata reachable GET <base address>/PreferenceService?wsdl WSDL document returned (httpGetEnabled="true")
Service responds SOAP request invoking GetPreferences (PreferenceService) A Preference[] response, empty or populated, with no side effect

GetPreferences is the lightest available read operation with no side effect; every other read operation either mutates state as a side effect (WebContextService.Get deletes the row it reads) or requires arguments that are not safe to invent for a health probe (FileService.ReadFile/Length require a real path; SecurityService.GetUser requires a real identity).

Fault conditions

Condition What the caller receives Operator action
Operation succeeds Response message None
Invalid input message Generic SOAP fault with full exception detail (includeExceptionDetailInFaults="true") Return the fault detail to the caller; no server-side action
Authorization failure Not applicable — no authorization in code on this host —
Unknown SOAP action ActionNotSupported fault Verify the operation name and namespace the caller is using
No service at the address HTTP 404 from IIS before dispatch Verify the route registration in Global.asax.cs and the deployed virtual directory
Unhandled exception in an operation Generic SOAP fault with full exception detail (type, message, stack trace) Escalate with the logged exception detail from LogService

Logs

Surface Location Content Retention
LogService (via ErrorLogErrorHandler.HandleError) Not determined from source ApplicationExceptionDetail — application name "WCF", environment track, machine name, calling user, exception detail Not determined from source
IIS log (HttpContext.Current.Response.AppendToLog) IIS site log SecurityService operation name and arguments (userId, employeeId, customerId, groupName, role) on every call Governed by IIS log retention policy — not determined from source

Environment configuration

Setting Key Purpose
Oracle instance selection EnvironmentConfigKeys.OracleDatabase Selects the Oracle instance behind CLM/IMG/EXTUR
SQL Server instance selection EnvironmentConfigKeys.NetFrameworkSqlServer Selects the SQL Server instance behind NETFRAMEWORK/APPM
Legacy.Fax endpoint EnvironmentConfigKeys.FaxSoapServiceUrl Outbound fax gateway address

See Configuration for the complete settings catalog, including the runtime resolution of database connections.

Error scenarios

Scenario Symptom Impact Recovery
Environment API unavailable Failure during the first per-request configuration read Operations on the five environment-dependent services fail; FileService is unaffected Verify Environment API availability for the configured track
Database connection resolution fails Exception from DbConnectionManager.Get*ConnectionString, and faults from data-backed operations PreferenceService, WebContextService, ImagingService, SecurityService operations fail Verify the environment config key and schema argument, then confirm database availability
Legacy.Fax unavailable Fault or timeout from FaxServiceProxy.SendFax FaxService.SendFax fails; a partially-sent recipient loop may leave the staged file on disk Verify Legacy.Fax availability and the resolved FaxSoapServiceUrl
Route not registered after a deployment HTTP 404 at the service address The affected service is unreachable Verify Application_Start ran and the route name matches the deployed address
Application pool recycled under load AuthorizationCacheService's process-wide cache and SecurityService.ldap_external static field are reset; intermittent authorization-cache misses follow Increased load on EXTUR/AD while the cache rebuilds Expected behavior after a recycle; no operator action required
ImagingService.QueueImage fails after the document write but before the sidecar write Document present without its .idx sidecar Downstream imaging pipeline cannot index the document Manually reconcile or re-queue the affected image

Monitoring and alerting

No telemetry, health-check endpoint, or alerting configuration was found in this repository for this host.

Sources

  • src/WCF/SAIF.Services.WCF.Host/Global.asax.cs
  • pipelines/build.yml
  • pipelines/release.yml
  • src/WCF/SAIF.Services.WCF.Host/Extensions/ErrorLogErrorHandler.cs
  • src/WCF/SAIF.Services.WCF.Host/Services/Security/SecurityService.cs