The result is returned in the ResultContent of the ResultDataType, as well as in the ResultContent and ReducedResultContent of the ResultType VariableType, and potentially also in the file transfer using the ResultTransferType.

In order to expose the format and data structure of the ResultContent, it is not possible to subtype the ResultDataType, as the type of a structure field cannot be changed in a subtype. However, a subtype of the ResultType VariableType should be created, where the ResultContent and ReducedResultContent can be overridden and the DataType is changed to the specific DataType. In order to expose this for the Event subscriptions, a subtype of the ResultReadyEventType should be created as well, using the subtype of the VariableType.

That is, without a subtype of the VariableType there is no standardized mechanism to expose the expected DataType for ResultContent and ReducedResultContent. Clients need to receive an instance of ResultDataType in order to get the information about the used DataType in that instance.

If the file transfer is used to expose larger results, Servers may support various file formats, as exposed by the FileFormat field of the ResultMetaDataType. In order to allow access to those different file formats, a Server should subtype the BaseResultTransferOptionsDataType and add a field for selecting the file format (and potentially other fields defining the content of the file). Servers should subtype the ResultTransferType (and therefore also the ResultManagementType) to document which subtype of the ResultTransferOptionsDataType is allowed when calling the Method for the file transfer. The BaseResultTransferOptionsDataType is intentionally defined as an abstract DataType. The subtype ResultTransferOptionsDataType can be used as concrete DataType, if no additional fields are needed. This allows to override the GenerateFileForRead Method and change the DataType of the generateOptions in the signature to a concrete DataType. This would not be allowed, if the BaseResultTransferOptionsDataType would not be abstract.