Status code · Connection

BadServerHalted

BadServer state

BadServerHalted means the server application is present and answering, but is not in a state where it will serve requests - stopped, failed, suspended or held for maintenance. Read Server_ServerStatus to see the actual ServerState and ShutdownReason instead of reconnecting in a loop against a server that is deliberately halted.

Defined behaviour: The server has stopped and cannot process any requests. (our description of the condition this code reports)

What you actually see

The connection is established or re-establishes fine, but every service call is refused with the same code, and it persists until someone intervenes on the server.

Why it happens

  • The server was put into a non-running stateServerState covers Running, Failed, NoConfiguration, Suspended, Shutdown, Test, CommunicationFault and Unknown. A server in Suspended or Test is intentionally not serving production requests. This is a maintenance action, not a fault, and reconnecting will not change it.
  • The controller behind the server is stoppedOn a PLC-embedded server, putting the controller in STOP, activating a new configuration or downloading a program halts the OPC UA server with it. The device answers on the network long enough to say so.
  • The server failed internallyAn unhandled fault in a server extension, an exhausted resource, or a configuration it could not load leaves it in Failed or NoConfiguration. It stays up enough to report status but refuses work. The reason is in the server log, not on the client.
  • Licensing or entitlement lapsedSeveral commercial and PLC-embedded servers require a runtime licence or an activated option. When it expires or cannot be validated, the server halts rather than serving. Confirm the current licensing requirement with the vendor for your firmware or product version.
  • Configuration reload in progressApplying a new nodeset, a new device configuration or a certificate change can take the server through a halted state. Clients that treat this as a hard failure churn sessions instead of waiting out a short, planned window.

How to fix it

In diagnostic order: work down, do not skip ahead.

  1. Read the server status before anything elseRead Server_ServerStatus and inspect State, StartTime, SecondsTillShutdown and ShutdownReason. This distinguishes a planned maintenance state from a crash in one call, and it works even while the server refuses other work.
  2. Check the controller or host stateOn a PLC, confirm RUN versus STOP and whether a download or configuration activation is in progress. On a software server, check the process and service state on the host and the last lines of its log.
  3. Look for a licence or entitlement problemIf the halt started at a date boundary or after a hardware change, check licensing before anything else. Vendors differ, so confirm the requirement and the SKU against current vendor documentation rather than assuming.
  4. Stop reconnecting aggressivelyA halted server will not be revived by connection attempts, and a fleet retrying tightly will make the recovery slower once it does come back. Back off to a long, jittered interval and alarm instead.
  5. Fail over if you have redundancyWhere a redundant partner exists, this code is a legitimate trigger to switch. Confirm the standby is actually Running before moving load onto it.

Where it shows up, by tool and stack

Tool / stackWhat to do there
Siemens S7-1500Putting the CPU in STOP, or downloading a program, stops the integrated OPC UA server. Expect it during commissioning, and expect namespace indices to change afterwards - re-resolve NamespaceArray on reconnect.
Beckhoff TwinCATThe OPC UA server is a separate service from the PLC runtime, so it can be stopped or halted while the machine keeps running. Check the service state on the machine rather than assuming a network problem.
UA-.NETStandard (C#)The ServerStatus node is maintained by the base server implementation, so reading state and shutdown reason works even when the server is refusing other services.
UaExpertThe Server object under the address space exposes ServerStatus directly. Adding CurrentTime and State to a Data Access View gives you an instant health panel for exactly this situation.
IgnitionThe connection reports Faulted with the server-side status in the gateway log. A persistent fault with successful TCP connectivity is the signature of a halted rather than an unreachable server.

What it looks like in the log

Service call refused: BadServerHalted
Server_ServerStatus_State = Suspended (was Running); requests will be refused
OPC UA server stopped because the controller changed to STOP

Confirm the fix

Read Server_ServerStatus_State and confirm it is Running, then perform a real Read and a Browse of the Objects folder successfully from the same client.

Stop it happening again

Monitor ServerState as a first-class health signal across the fleet, treat planned downloads and configuration activations as scheduled outages, and back off rather than hammer when a server reports it is halted.

Stuck on more than one of these? The troubleshooting clinic works through broken configurations end to end, on camera.

Troubleshooting clinic →

Last verified 7 September 2026 against OPC UA 1.05.07. OPC UA Connect is an educational resource and is not affiliated with the OPC Foundation.

Free download
OPC UA Status Code Diagnostic Tree
A 15-page diagnostic reference grouping every normative status code by what actually went wrong: with the first action for each, and the four questions that resolve most faults before you read a single code.
Get the free diagnostic tree →
Free, no course, no login