MB-500 · Question #17
Case Study 2 - First Up Consultants Background Overview First Up Consultants provides Commercial Cleaning services to its clients. The company purchases all its cleaning supplies from Best For You…
The correct answer is DataContractAttribute; DataMemberAttribute; SRSReportParameterAttribute. Explanation: Outstanding Invoice Report Attributes This question tests your knowledge of the SSRS reporting pattern in Dynamics 365 Finance (X++). Creating a report with parameters requires three distinct attributes applied at different layers of the report architecture…
Question
Exhibit
Answer Area
Drag items
Correct arrangement
- DataContractAttribute
- DataMemberAttribute
- SRSReportParameterAttribute
Explanation
Explanation: Outstanding Invoice Report Attributes
This question tests your knowledge of the SSRS reporting pattern in Dynamics 365 Finance (X++). Creating a report with parameters requires three distinct attributes applied at different layers of the report architecture.
The Pattern: How SRS Reports Work
A parameterized SSRS report in D365 Finance requires three components working together:
[DataContractAttribute] ← marks the parameter class
class MyReportContract { }
[DataMemberAttribute] ← marks each parameter method inside it
public method parmX() { }
[SRSReportParameterAttribute] ← links the contract to the report controller
class MyReportController { }
Placement 1: DataContractAttribute
Applied to: the data contract class itself (the class declaration).
This attribute tells the X++ serialization framework that this class is a data contract - a serializable container for report parameters. Without it, the framework cannot recognize or serialize the class as a parameter holder.
Think of it as registering the class as "this is the parameter bag for the report."
Placement 2: DataMemberAttribute
Applied to: each parm method inside the data contract class.
Each report parameter (e.g., vendor filter, date range) is exposed via a parm method. DataMemberAttribute marks each method as a serializable member of the contract, making it visible and bindable in the report parameter dialog.
Without this, individual parameters are invisible to the framework even if the class itself is recognized.
Placement 3: SRSReportParameterAttribute
Applied to: the report controller class.
This attribute takes the data contract class name as its argument and links the controller to its parameter contract. It tells the SRS runtime which contract class to instantiate when the report is run.
[SRSReportParameterAttribute(classStr(MyReportContract))]
class MyReportController extends SrsReportRunController { }
Why SysOperationDisplayOrderAttribute is NOT used here
| Attribute | Framework | Purpose |
|---|---|---|
SysOperationDisplayOrderAttribute | SysOperation (batch jobs) | Controls UI display order of batch parameters |
DataContractAttribute | SRS Reports | Marks a class as a report parameter contract |
The case study also involves batch jobs using SysOperation Framework, which does use SysOperationDisplayOrderAttribute. This is the primary distractor - candidates confuse the two frameworks.
Common Mistakes
- Using
SysOperationDisplayOrderAttributefor the report - it belongs to batch jobs, not SSRS reports. - Forgetting
DataMemberAttribute- the class alone isn't enough; each parm method must also be decorated. - Applying
SRSReportParameterAttributeto the wrong class - it goes on the controller, not the data contract.
Topics
Community Discussion
No community discussion yet for this question.
