Status code · Server

BadServiceUnsupported

BadProfiles / facets

BadServiceUnsupported means the server does not implement that OPC UA service at all. It is a conformance statement, not a fault: read ServerProfileArray and the ServerCapabilities short codes to see which service sets the product actually claims, then design around what is there.

Defined behaviour: The server does not support the requested service. (our description of the condition this code reports)

What you actually see

One specific call fails identically every time from every client, while sessions, browsing and reads all work normally.

Why it happens

  • The service set is outside the profile the product implementsThe Query service set is the classic example: it is optional, rarely implemented, and absent from major open stacks. Node management services such as AddNodes and DeleteNodes, and HistoryUpdate, are equally often left out. A server built to the Standard UA Server Profile is not obliged to have any of them.
  • An embedded server implementing only the micro or nano profileSmall device servers implement a deliberately reduced service surface. Subscriptions, method calls and history can all be absent by design because the profile they target does not require them, and there is no configuration switch to turn them on.
  • The stack was compiled without the featureOpen-source stacks gate features at build time. A server compiled without historizing, without subscriptions or without method support returns this code no matter how the running instance is configured.
  • A gateway that does not pass the service throughAggregating servers and protocol gateways implement a subset and translate it downstream. A service the underlying device supports can still be unsupported at the gateway, which is where your client is actually talking.
  • ServerProfileArray over-claims what the server doesThe opposite failure is a server that advertises a facet it does not fully implement, so a client written from the advertised profile calls a service that then fails. The guidance in the reference stack is blunt: only advertise a facet the application genuinely implements, because the Compliance Test Tool exercises every claimed facet. Over-claiming ServerProfileArray is a leading cause of failed certification.

How to fix it

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

  1. Read ServerProfileArray before writing any client codeBrowse the Server object and read ServerProfileArray. The entries are profile and facet URIs from the OPC Foundation profile registry, for example the standard server profile, the data access, methods, reverse connect, HistoricalRawData2022 and AggregateHistorical2022 facets. That array is the product telling you what it does.
  2. Read the ServerCapabilities short codesServer/ServerCapabilities carries the short capability codes such as DA for data access, HD for historical data, AC for alarms and conditions, HE for historical events, PUB for PubSub and the companion-specification codes. Reading them takes thirty seconds and tells you whether you are doing semantic integration or tag scraping.
  3. Confirm the missing piece is the service and not the nodeA failure that follows the service rather than the node is a capability gap. If the same service works on another node, you are looking at a per-node problem such as BadNotWritable or BadHistoryOperationUnsupported instead.
  4. Redesign around the supported servicesReplace Query with browse plus TranslateBrowsePathsToNodeIds. Replace missing history with a collector that subscribes and writes to a time-series store. Replace node management with an offline NodeSet2 that is loaded at server start.
  5. Raise it with the vendor as a conformance questionAsk which profile and facets the product is certified for, and for which version. That framing gets a precise answer, where asking whether a feature is supported usually does not.

Where it shows up, by tool and stack

Tool / stackWhat to do there
open62541 (C)The service matrix in the project documentation is explicit about what is implemented; the Query service set is not, and there is no HTTPS transport. Features are also selected at build time, so check the build configuration as well as the documentation.
UA-.NETStandard (C#)The reference server advertises a deliberately conservative ServerProfileArray, and reconciling the advertised set against what it implements is tracked as an open issue. Treat it as the model for honest advertising rather than as a complete list of capability.
node-opcuaClient and server both cover the common service sets; the more exotic ones are absent. When you build a server on it, populate ServerProfileArray with only the facets you have actually implemented and tested.
UaExpertThe Server Diagnostics and attribute views let you read ServerProfileArray directly. Do this first on any unfamiliar server; it saves an afternoon of writing code against services that do not exist.
Siemens S7-1500The integrated server implements a defined subset aimed at data access and methods. Confirm the current supported service set and any licensing requirement against the vendor documentation for your firmware rather than assuming from an older manual.
opcua-commanderBrowse the Server object and read ServerProfileArray and the ServerCapabilities children straight from the terminal. It is the fastest capability check on a headless machine and needs no registration.

What it looks like in the log

Service Query returned BadServiceUnsupported
Requested service not implemented by this server profile
ServerProfileArray: http://opcfoundation.org/UA-Profile/Server/StandardUA2017

Confirm the fix

Read ServerProfileArray and the capability codes, then confirm the workflow you need maps only onto services listed there and runs end to end against the real server.

Stop it happening again

Make reading ServerProfileArray and ServerCapabilities the first step of every integration, and record the result in the project so nobody designs against a service the target server never had.

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