Overview
One client-mode connector, SiemensOpcenterExecution, for the service layer of Siemens Opcenter Execution. Opcenter Execution Discrete, Process and other solutions built on Opcenter Execution Foundation expose the same surface: OData v4 reads on/sit-svc, a read-only archive on /sit-arch, and public commands that the solution’s workers execute.
Use the connector to bring MES context into your Unified Namespace: publish active work orders next to the machine data that serves them, count open operations per line, or look up a finished order in the archive. In the other direction, a machine event on the broker can call an Opcenter command such as completing an operation or recording a consumption.
Every Opcenter solution is different. Entity sets and command names come from the Apps installed in your solution, and Opcenter generates an OpenAPI 3.0.3 description of them when the solution is built. Start with the discovery events, then use the exact names they return.
Topics are
mes/siemens-opcenter-execution/<object>/<verb>; every reply goes to <topic>/response.
app_path is Application/<AppName> for the default plant, or <PlantId>/Application/<AppName> in a multi-plant installation, for example Application/AppU4DM or Plant1/Application/AppU4DM. solution_path is Application or <PlantId>/Application.
Authentication
Every event sendsAuthorization: {authorization}, so pass the whole header value, normally "Bearer <access token>". Opcenter issues tokens through its authentication service (/sit-auth), backed by Siemens UMC or the identity provider your installation is configured with. How a service account gets a token depends on that setup, so ask your Opcenter administrator for a service account and the token procedure, and give the account only the roles the commands you plan to call need.
Keep the value in a broker secret (suggested OPCENTER_AUTHORIZATION) and map it in with GET SECRET. Tokens expire, so refresh the secret on the schedule your identity provider uses. A missing or expired token returns 401; a role without permission returns 403.
Basic Syntax
Opcenter runs on your own servers or private cloud, so setBASE_ADDRESS to the host that serves /sit-svc (no trailing slash).
SiemensOpcenterExecutionRestApi.lot in the REST API app.
MQTT examples
Request bodies go underbody, so control fields like authorization, app_path, entity and query are not sent to Opcenter.
Discover what an App offers: publish to mes/siemens-opcenter-execution/app-openapi/get:
app-metadata/get returns the entity sets and keys.
Read the first 20 work orders: publish to mes/siemens-opcenter-execution/work-order/list. The OData query must be URL-encoded:
entity/query with "entity": "<EntitySet>" for any other entity set, and send "query": "" when you do not need options.
Get one record: publish to mes/siemens-opcenter-execution/entity/get with "entity" and "key". The key is the OData key literal as it appears in the URL: a Guid as is, a string in single quotes such as "'WO-0001'".
Call a public command: publish to mes/siemens-opcenter-execution/command/invoke:
body unchanged, so copy its shape from the command’s schema in GetAppOpenApi or GetSolutionOpenApi.
Helper actions
Keep the token in a broker secret, poll work orders every minute, and turn a line event into an Opcenter command:mes/siemens-opcenter-execution/# with a rule: its payloads carry the token, and InvokeCommand changes production records.
Notes
- Errors come back on the response topic:
401for a missing or expired token,403when the account’s role does not allow the call,404for an unknown App, entity set or command,400for a malformed OData query or command body, and500when a command handler fails. - Commands are executed by Opcenter workers. Some return only after the transaction commits; check the result by reading the affected entity afterwards.
/sit-archis the archive database and is read-only. Use it for history and audit, and/sit-svcfor live production data.- In a multi-plant installation each plant has its own data. Put the plant id in
app_pathand useGetPlantConfigwithplantid=<PlantId>to check it. - Names differ between Opcenter Execution Discrete, Process and custom solutions.
ListWorkOrdersassumes aWorkOrderentity set; if your App names it differently, useQueryEntities.

