Reference
Dispatcher: Live Configuration Evidence
Read over the JSON REST SOA surface against a real Teamcenter 2506 tier with Dispatcher deployed (Siemens Pre-Int, site "Saber 2.0"), 2026-08-03. This is the first page in this section grounded in a running system rather than shipped files.
Everything here is a preference read back from the live instance. Nothing was written.
★ The casing rule is confirmed
The zero-Java recipe warns that the two preference families use different casing conventions. Verified live across five separate translators:
| Menu family (service UPPER-CASED) | Extract/load family (literal case) |
|---|---|
ETS.DATASETTYPES.SIEMENS.TOZIPFILE |
SIEMENStozipfile_ets_ds_types |
ETS.DATASETTYPES.SIEMENS.CATIAV5TOJT |
SIEMENScatiacoexist_ets_ds_types |
ETS.DATASETTYPES.SIEMENS.NXDWGTOTIF |
SIEMENSnxdwgtotif_ets_ds_types |
ETS.DATASETTYPES.SIEMENS.CMMCADTONX_DIRECT |
SIEMENSCapitalForward_ets_ds_types |
The last row is the clincher: a CamelCase service name survives verbatim in the extract/load preference. Get this wrong and the preference simply does not exist, which reads as a silent misconfiguration rather than an error.
★★ The two families are genuinely independent
This deployment proves it, because one translator has each half and not the other.
CapitalForward has the extract/load half and no menu half. Every
ETS.DATASETTYPES / ETS.PRIORITY / ETS.TRANSLATOR_ARGS / ETS.REPEATING_UI
lookup for it returns cannot be found (error 1700), in both upper and
CamelCase spellings. It is registered in ETS.TRANSLATORS.SIEMENS, so it is a
known service, but it cannot be invoked from the Translate menu. Either it is
driven programmatically, or the configuration was never finished.
cmmcadtonx_direct has the menu half and no extract/load half.
SIEMENScmmcadtonx_direct_ets_ds_types does not exist, while
ETS.DATASETTYPES.SIEMENS.CMMCADTONX_DIRECT lists 17 CAD dataset types.
That second case is not a mistake, it is the direct translator pattern. As
the shipped Service.properties states, direct translators store results in
Teamcenter themselves and specify no Load class, configuring file mapping in
PostProcessor.xml instead. So they need the menu preferences and never touch
the extract/load ones. Live confirmation of a distinction the admin guide makes
only in passing.
Practical rule: when a translator misbehaves, check which family you are missing before checking anything else. Missing menu family means it will never appear to a user. Missing extract/load family means either it is direct, or the load will fail.
A complete live custom translator
CapitalForward is the interesting one: a CamelCase name in a list where every
Siemens service is lowercase, and it is absent from the 78 services in the
shipped translator.xml. Its full configuration:
ETS.TRANSLATORS.SIEMENS includes CapitalForward
SIEMENSCapitalForward_ets_ds_types = MdwAWMDModel
SIEMENSCapitalForward_MdwAWMDModel_ets_nr_types = mdzip
SIEMENSCapitalForward_MdwAWMDModel_ets_dst_ds_type = Text
SIEMENSCapitalForward_MdwAWMDModel_ets_dst_nr_type = text
SIEMENSCapitalForward_MdwAWMDModel_ets_dst_relation_type = IMAN_specification
SIEMENSCapitalForward_MdwAWMDModel_ets_dst_relation_to_src = false
Read that as a sentence: take an MdwAWMDModel dataset, pull its mdzip named
reference, run the translator, and attach the result as a Text dataset with a
text named reference, related to the source item revision by
IMAN_specification.
This is the zero-Java recipe, deployed. Six preferences, one registration entry, no Java. It is the strongest available evidence that the preference route documented in this KB is the real production pattern and not merely a sample.
Two details worth noticing:
- The preference description is a copy-paste artifact. The description on
SIEMENSCapitalForward_ets_ds_typesreads "Specifies the datasets that the Siemens tozipfile service can translate." Whoever created it cloned thetozipfilepreference and did not update the text. That is what hand-authoring looks like, and it is exactly the workflow this KB recommends (copy the sample XML, search and replace). _ets_nr_typesholds a single value here,mdzip. Consistent with Siemens KB PL8058970, which reports the genericTaskPreponly honors the first value anyway.
⚠⚠ A source dataset type with no instances
Chasing whether that translator could ever fire turned up a second, independent reason it could not: its configured source type has no instances on the tier. The MBSE models it was clearly built for are stored under a completely different type prefix.
Worth checking on any translator you inherit: _ets_ds_types naming a type that
does not exist, or exists with zero instances, is invisible in every config file
and produces no error anywhere. It simply never fires.
⚠⚠⚠ A query returning zero can mean ACCESS DENIED
The most expensive trap on this page, and it produced two wrong conclusions before it was caught.
Searching as a restricted service account returned a clean 0 found for the
objects in question. Not an error. Not a warning. Zero. The natural reading is
"this data does not exist," and that reading was wrong: the objects were there
the whole time, and the account was simply ACL-filtered from them.
What makes this vicious is that the usual calibration does not catch it. Verifying that the query mechanism works (search a type you know is populated, get hundreds of hits) proves only that the query works. It says nothing about whether your user can see the specific objects you are asking about.
The tell exists, but only on one route:
| Route | Behaviour when denied |
|---|---|
OOTB General... / Item Name saved queries |
Clean 0. No error. No hint. |
Internal-Query-2008-06-Finder/findObjectsByClassAndAttributes |
Empty result plus partialErrors with code 525084 "Access denied" |
So when a zero surprises you, re-run it through
findObjectsByClassAndAttributes and look for 525084, and re-run it as a
second user with broader rights before concluding anything is absent.
Practical rule for Dispatcher work specifically: the account you browse with
is usually not the account Dispatcher runs as. A translator can be perfectly
configured against data you cannot see, and data you can see may be invisible
to the Dispatcher service account, which fails the extract at PREPARING for
reasons no config file explains. Check both directions.
Category is not enforced
Dispatcher preferences on this tier live in three different categories:
| Category | Example |
|---|---|
Dispatcher |
most of them |
General |
ETS.DATASETTYPES.SIEMENS.CMMCADTONX_DIRECT, ETS_trans_rqst_referenced_dataset_types |
ADP.NXCatiaCoexistence |
SIEMENScatiacoexist_ets_ds_types |
The lookup is by preference name, not by category. Do not rely on category
to find them, and do not assume a preference is missing because it is not filed
under Dispatcher.
What this tier actually offers
ETS.TRANSLATORS.SIEMENS lists 70 services. Most map to the shipped
catalog, but several are not in the shipped translator.xml at all:
CapitalForward, cmmcadtonx_direct, cmmcadtonx1_direct,
cmmcadtonx2_direct, cmmcadtonx3_direct, cmmcadtonxpsd_direct,
catiacoexist, catiav5tojtdirect, nxdwgtotif
Some of those are add-on product content rather than site customization
(catiacoexist sits in an ADP. category, suggesting it arrives with a
solution template). The point stands regardless: the shipped 78-service
catalog is a floor, not a ceiling, and the live ETS.TRANSLATORS.<provider>
preference is the only authoritative list for a given tier.
Other settings read live:
| Preference | Value |
|---|---|
ETS.PROVIDERS |
SIEMENS only. No custom provider registered |
DISPATCHER_CLIENT_INSTALLED |
true |
TCM_DISPATCHER_CLIENT_TIMEOUT |
15 |
DISPATCHER_rqst_on_specific_dataset_revision |
false |
TC_tms_use_dispatcher_for_async_operation |
false |
ETS_trans_rqst_referenced_dataset_types |
16 CAD and Office dataset types |
ETS.TRANSLATORS.SIEMENS is the only Dispatcher preference seen with
protectionScope: Site and isEnvEnabled: true; the rest are User scope.
✅ Settled at the host level
The SOA reads above could not tell us whether anything had ever run. Two
queries returned zero and neither was evidence of absence (DispatcherRequest
and MdwAWMDModel via the OOTB General... saved query; getTypeDescriptions2
also throws InternalServerException for both type names, and a zero from that
saved query is a known non-result).
Resolved by reading the Dispatcher host directly, same day:
| Question | Answer |
|---|---|
| Is Dispatcher deployed? | Yes. All three components installed as Windows services, version 2506.0004 |
| Are they running? | No. All three Stopped, with StartMode: Auto |
| Has anything ever run? | Yes, extensively. 2,715 task log directories spanning four months |
| Has the custom translator run? | Never. Zero occurrences in any task log |
So: a heavily-exercised Dispatcher installation, currently stopped, carrying one fully-plumbed custom translator that has never been invoked because its menu preferences were never created.
StartMode: Auto with State: Stopped is worth internalising. A service
list proves deployment and nothing more. Only -ping or a fresh log timestamp
proves operation.
The host also had 16 translators marked isactive="true", against the shipped
default where only tozipfile is active. Enabling is per-site and the live file
is the only authority.
Full detail on what a working one looks like, including the per-task log triplet
and the real translator.xml attributes a tuned deployment uses:
Anatomy of a working custom translator.
How this was read
Ordinary SOA, no Dispatcher-specific API:
Administration-2012-09-PreferenceManagement/getPreferences
{ "preferenceNames": [...], "includePreferenceDescriptions": true }
Missing preferences come back as partialErrors with code 1700 and the
message The preference "X" cannot be found, while present ones populate
response[]. That makes a single call an efficient probe: batch the six
extract/load names plus the four menu names for a service and the shape of the
reply tells you immediately which half is configured.
includePreferenceDescriptions: true is worth setting. The descriptions carry
the authoritative semantics, and as CapitalForward shows, they also reveal
provenance when someone has cloned a preference without editing the text.
Source: Siemens Pre-Int tier, read over SOA 2026-08-03 · retrieved 2026-08-03