Skip to main content

Custom Report Storage

  • 2 minutes to read

This document explains how you can implement a report storage for the End-User Report Designer. A report storage enables you to use a database, an eXpress Persistent object, a ZIP file, or any other location to store and retrieve reports.

Windows Forms

You can store report definitions in a database or any other repository. A single repository is a convenient way to share reports between users when they create or edit reports with the End-User Designer.

View Example: How to Implement a Custom Report Storage


To implement a Report Storage, create the ReportStorageExtension class descendant and override its methods.

The user actions and their implementation methods are listed below.

  • Save reports

    • The SetData method saves a report with the specified identifier to the Report Storage. Override the IsValidUrl method to validate the identifier.
    • The SetNewData method obtains a new report identifier and saves a report. Override the CanSetData method to determine whether the save operation is available.
  • Restore reports

    • The GetData method retrieves the XML-serialized report by the specified identifier from the Report Storage.
    • The GetNewUrl method obtains the report identifier that is used to open a report.
  • Manage reports

To make the custom report storage available in your application, register it with the static RegisterExtensionGlobal method.

For informaton on how to serialize and store custom objects (such as custom parameters or object data sources), review the following help topic: XML serialization.


A report storage in a WPF application implements the IReportStorage interface. For more information, review the following help topic: Store Reports in the Report Designer.


For information on how you can add a server-side storage to your web reporting application, review the following help topics: